Java反射机制
加载并获取Class对象的三种途径:
1.最常用的一种:Class.forName(); 例如:Class c1=Class.forName("/day01/src/com/xy/reflect/Person");
2.实例对象.getClass(); 例如:Class c2=new Person().getClass();
3.类.class; 例如:Class c3=Person.class;
这三种方式的异同:
相同点:
这三种方式得到的都是java,lang.Class对象,并且都需要加载到内存中去;
不同点:
1)Class
2)Class
3)Class.forName("类名");
注意:Java.lang.Class对象是单实例的,无论这个类创建了多少个对象,他的Class对象时唯一的!!!!。
new和newInstance的区别:
new:我们在java中使用new创建一个类的对象的时候,这个类是可以没有加载的。
newInstance()方法:但是使用Class对象的newInstance()方法:就必须保证:1、这个
现在可以看出,Class对象的newInstance()(这种用法和Java中的工厂模式有着异曲同工之妙)实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。
最后用最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance:
new: