例如有两段程序
//代码1:
import a.b.MyClass;public class test
{
public static void main(String args[])
{
MyClass myclass=new MyClass();
}}//代码2:
public class test
{
public static void main(String args[])
{
Object obj=Class.forName(a.b.MyClass).newInstance();
}
}我的理解是,同样是生成MyClass的实例,两段代码有什么不同呢?有什么情况下用哪个?
//代码1:
import a.b.MyClass;public class test
{
public static void main(String args[])
{
MyClass myclass=new MyClass();
}}//代码2:
public class test
{
public static void main(String args[])
{
Object obj=Class.forName(a.b.MyClass).newInstance();
}
}我的理解是,同样是生成MyClass的实例,两段代码有什么不同呢?有什么情况下用哪个?
有的时候需要生成的类不确定,有可能是a.b.c 有可能是 x.y.z这时候可以用参数的形式 传送变量进来,用第二种就可以动态获得类实例, 特别的 forName()还有个用字符串参数的同胞兄弟,数据库驱动类名从配置文件读取时就经常用到
是用在初始化数据库驱动时用的
Class实例对象可以调用newInstance()方法实例化一个对象;你用new的方式的话,他也要检查有没有这个类的Class类对象实例,没有的话,
还是会ClassLoader装载类,再利用C这个lass实例对象来实例该类对象