获取class对象
1、调用某个对象的getClass()方法
例:Person p = new Person();
Class clazz = p.getClass();
2、调用某个类的class属性
例:Class clazz = Person.class;
3、使用Class类中的forName()静态方法(最安全,性能好)
例:Class clazz = Class.forName("类的全路径");(最常用)
Class类:反射的核心类,可以获取类的属性和方法等信息
Field类:java.lang.reflect包中的类,表示类的成员变量,可以获取和设置类的属性
Method类:java.lang.reflect包中的类,表示类的方法,可以获取和设置类中的方法信息或执行方法
Constructor类:java.lang.reflect包中的类,表示类的构造方法
例:
获取Person类的所有方法信息
Method[] method = clazz.getDeclareMethods();
获取Person类的所有成员属性信息
Field[] field = clazz.getDeclareFields();
获取Person类的所有构造方法信息
Constructor[] constructor = clazz.getDeclareConstructors();
创建对象
Class对象的newInstance()
1. 使用 Class 对象的 newInstance()方法来创建该 Class 对象对应类的实例,但是这种方法要求 该Class对象对应的类有默认的空构造器
例:Person p = (Person) clazz.newInstance();
调用Constructor对象的newInstance()
2、先使用Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance() 方法来创建 Class对象对应类的实例,通过这种方法可以选定构造方法创建实例
例://获取构造方法并创建对象 Constructor c=clazz.getDeclaredConstructor(String.class,String.class,int.class); //创建对象并设置属性 Person p1=(Person) c.newInstance("李四","男",20);