java新操作符和类之间的区别是什么。newInstance()? 4 月,4 周 Questions & Answers 29302 new运算符和Class.forName(...).newInstance()运算符之间的区别是什么?它们都创建了一个类的实例,我不确定它们之间有什么区别
# 3 楼答案 new操作符创建一个静态已知(在编译时)类型的新对象,并可以调用您试图创建的对象上的任何构造函数。这是创建对象的首选方式——速度很快,JVM对其进行了大量积极的优化 Class.forName().newInstance()是一个动态构造,用于查找具有特定名称的类。它比使用new慢,因为对象的类型不能硬编码到字节码中,而且JVM可能必须进行权限检查,以确保您有权创建对象。它也是部分不安全的,因为它总是使用零参数构造函数,如果您试图创建的对象没有空构造函数,它会抛出异常 简而言之,如果在编译时知道要创建的对象的类型,请使用new。如果你不知道要制作什么类型的对象,可以使用Class.forName().newInstance()
# 4 楼答案 Class.forName('myClass').newInstance()如果尚未加载,则加载该类。在这里,它调用初始构造函数,只执行构造函数的静态部分 new操作符用于初始化新对象 您可以通过new运算符和Class.forName()创建多个实例。不同之处在于,当您第二次创建newInstance()静态块时,静态块将不会被初始化 JDBC驱动程序就是一个很好的例子 Class.forName("com.mysql.JDBC.Driver").newInstance()
# 5 楼答案 Class.forName("your class name").newInstance()用于从类中获取实例,类似于new,但在jar文件或远程服务器中的类中获取实例,并且无法在编译时导入它时,它非常有用 例如:Class.forName("YOUR JDBC DRIVER").newInstance(),不能在编译时导入JDBC类
# 6 楼答案 如果需要动态实例化类,那么Class.forName("your class name").newInstance()很有用,因为创建对象不需要硬编码类名 想象一下这样一个场景:从远程源动态加载类。您将知道它们的名称,但无法在编译时导入它们。在这种情况下,不能使用new创建新实例。这就是Java提供newInstance()方法的原因之一
# 1 楼答案
主要区别在于
Class.forName('your class name').newInstance()
是动态的,因为类型不需要硬编码到代码中# 2 楼答案
上课。forName只能调用默认构造函数(不带参数)和 可以在运行时提供类名,例如从配置文件读取的db驱动程序名
# 3 楼答案
new
操作符创建一个静态已知(在编译时)类型的新对象,并可以调用您试图创建的对象上的任何构造函数。这是创建对象的首选方式——速度很快,JVM对其进行了大量积极的优化Class.forName().newInstance()
是一个动态构造,用于查找具有特定名称的类。它比使用new
慢,因为对象的类型不能硬编码到字节码中,而且JVM可能必须进行权限检查,以确保您有权创建对象。它也是部分不安全的,因为它总是使用零参数构造函数,如果您试图创建的对象没有空构造函数,它会抛出异常简而言之,如果在编译时知道要创建的对象的类型,请使用
new
。如果你不知道要制作什么类型的对象,可以使用Class.forName().newInstance()
# 4 楼答案
Class.forName('myClass').newInstance()
如果尚未加载,则加载该类。在这里,它调用初始构造函数,只执行构造函数的静态部分new
操作符用于初始化新对象您可以通过
new
运算符和Class.forName()
创建多个实例。不同之处在于,当您第二次创建newInstance()
静态块时,静态块将不会被初始化JDBC驱动程序就是一个很好的例子
# 5 楼答案
Class.forName("your class name").newInstance()
用于从类中获取实例,类似于new
,但在jar文件或远程服务器中的类中获取实例,并且无法在编译时导入它时,它非常有用例如:
Class.forName("YOUR JDBC DRIVER").newInstance()
,不能在编译时导入JDBC类# 6 楼答案
如果需要动态实例化类,那么
Class.forName("your class name").newInstance()
很有用,因为创建对象不需要硬编码类名想象一下这样一个场景:从远程源动态加载类。您将知道它们的名称,但无法在编译时导入它们。在这种情况下,不能使用
new
创建新实例。这就是Java提供newInstance()
方法的原因之一