反射创建对象的步骤
只要两步:
1.获取类的字节码对象
2.调用字节码对象的newInstance()方法
public class Person {
String name = "Will";
}
class Test {
public static void main(String[] args) throws Exception {
Class clz = Class.forName("com.pac1.Person");
Person p = (Person) clz.newInstance(); //这里要做一下类型转换
System.out.println(p.name);
}
}
执行结果:
反射创建对象和用new创建对象的异同
相同点:
都要调用构造方法;
每一次都是产生新的对象
不同点:
反射创建的方式更灵活一些, 只要传入一个类的全限定名即可, 毕竟比起严谨的new要宽松的许多;
反射创建对象的速度和性能略低于new, 不过这个差距要连续创建几万个对象才会出现那仅仅半秒的差距