Class.forName()和new关键字的区别

Class.forName(类名) jvm动态的加载一个类。

Class.forName(类名).newInstance() 调用类的无参构造方法返回的是Object对象,需要强转为指定类型。

new 是一个关键字,调用类的构造方法(可以无参的、有参的),返回一个类的对象。

例如

EgClass egClass=(EgClass)Class.forName(“EgClass类名”).newInstance();

问题:为什么有的类使用的时候只需要Class.forName(),不需要Class.forName().newInstance()?如加载数据库驱动时?

因为需要的内容写在了类的静态方法中了。在类的加载过程中,类的静态方法中的代码已经执行过了,不需要再实例化了。

例如:

ClassA  {

       static{

              相关内容

}

}

猜你喜欢

转载自www.cnblogs.com/perfumeBear/p/11761282.html