Class.forName(类名) jvm动态的加载一个类。
Class.forName(类名).newInstance() 调用类的无参构造方法返回的是Object对象,需要强转为指定类型。
new 是一个关键字,调用类的构造方法(可以无参的、有参的),返回一个类的对象。
例如
EgClass egClass=(EgClass)Class.forName(“EgClass类名”).newInstance();
问题:为什么有的类使用的时候只需要Class.forName(),不需要Class.forName().newInstance()?如加载数据库驱动时?
因为需要的内容写在了类的静态方法中了。在类的加载过程中,类的静态方法中的代码已经执行过了,不需要再实例化了。
例如:
ClassA {
static{
相关内容
}
}