黑马程序员
反射–Class对象功能概述
package A_Part02.Reflect_Demo;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
public class Reflect_Test {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, InstantiationException {
Class<Person> personClass = Person.class;
//获取所有public修饰的成员变量
Field[] fields = personClass.getFields();
for (Field field : fields) {
System.out.println(field);
}
Field a = personClass.getField("a");
//获取成员变量a的值
Person person = new Person();
Object o = a.get(person);
System.out.println(o);
//设置a的值
a.set(person,"张三");
System.out.println(person.a);
System.out.println("******************************************************");
Constructor<Person> constructor = personClass.getConstructor();
System.out.println(constructor);
Constructor<Person> constructor2 = personClass.getConstructor(String.class,int.class);
System.out.println(constructor2);
//创建对象
Person person1 = constructor2.newInstance("赵六", 20);
System.out.println(person1);
}
}