欢迎光临
我们一直在努力

newinstance,newInstance()

类的加载方式不同 在执行Class.forName(“xxyy.class.Name”)时,JVM会在classapth中去找对应的类并加载,这时JVM会执行该类的静态代码段。 在使用newInstance()方法的时候,必须保证这个类已经加载并且已经连接了,而这可以通过Class的静态方法forName()来完成的。 使用关键字new创建一个类的时候,这个类可以没有被加载,一般也不需要该类在classpath中设定,但可能需要通过classlaoder来加载。 所调用的构造方法不尽相同 new关键字能调用任何构造方法。newInstance()只能调用无参构造方法。 执行效率不同 new关键字是强类型的,效率相对较高。newInstance()是弱类型的,效率相对较低。 其他 既然使用newInstance()构造对象的地方通过new关键字也可以创建对象.forname()会导致类被初始化,newInstance()才会实例化,而new()操作等于初始化+实例化。 适用 使用newInstance()在通用性方面比较高,className我们可以用配置文件进行相关的配置便宜美国vps。String className = 从配置文件中读取className; A a = (A) Class.forName(className).newInstance();再配合依赖注入的方法,就提高了软件的可伸缩性、可扩展性。框架的开发中用的比较多! public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { String str = (String) Class.forName(“java.lang.String”).newInstance(); String str1 = new String(); if(str.getClass() == str1.getClass()){ System.out.println(“YES”); } } output:YES 08050559

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。