public static void CreateObject() throws Exception {
//早期运行时
//原始创建对象的方式,在所在classPath路径去找名字为Test类的
//字节码.class文件(编译时创建的),并将其加载进内存,并在堆内存中开辟空间
Test t1 = new Test();
Test t2 = new Test("asdf", 34);
//现在,只有类名,类存在不存在不知道
//我也想完成创建对象的步骤
String className = "Test";
Class cc = null;
try{
//通过名称获取类的字节码文件,并加载进内存,产生Class文件
cc = Class.forName("Test");
System.out.println("测试");
}
catch (ClassNotFoundException e){}
try
{ //通过Class类对象cc中的空参数构造函创建一个新实例
Object obj = cc.newInstance();
}
catch (InstantiationException e){}
catch (IllegalAccessException e){}
//如果要通过制定构造函数进行对象初始化怎么办呢?
//获取该字节码文件对象中的所有共有构造方法
//返回执行类型的构造器对象
Constructor con = cc.getConstructor(String.class, Double.class);
//使用构造器对象的newInstance()方法,
//来创建该构造方法的声明类的新实例,
//并用指定的初始化参数初始化该实例。
Object obj = con.newInstance("zhangsan", 45.2);
}
|