反射:类的对象 与 类对象,如何获取类对象
要明确类对象,先弄清楚
什么是类的对象?
基于某个类 new 出来的对象,也称为实例对象
什么是类对象?
类加载的产物,封装了一个类的所有信息(类名、父类、接口、属性、方法、构造方法)
每一个类,比如Person、Student、Teacher等等都是Class类的一个对象
每个类加载到内存后都对应一个Class对象
每个类有且只有一个Class对象
这里的难点在于:把类当成一个对象来看待,每一个类实际上就是Class对象的一个对象
-verbose:class 显示类加载的过程
如何获取类对象??
1、通过类的对象获取类对象.
通过类的对象调用 getClass()获取类对象
Student s = new Student();
Class c = s.getClass();
2、通过类名.class 获取类对象
Class c = 类名.class;
3、★通过静态方法获取类对象(推荐使用)
Class c = Class.forName("包名.类名");
例子:
——————————————————————————————————————————————————
——————————————————————————————————————————————————
——————————————————————————————————————————————————
获取无参构造,通过newInstance创建对象
注意上面还有一种简便的方法,类对象本身就有newInstance的方法,就不需要使用getConstructor()方法来转换了
使用类对象直接newInstance,就不用先获取无参构造方法来调用无参构造了
获取带参构造方法
先查看类的带参构造方法
代码如下: