import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
//通过反射获取成员变量
public class ReflectDemo4 {
public static void main(String[] args) throws NoSuchFieldException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Class<Student> studentClass = Student.class;
//获取公共成员变量
// Field[] fields = studentClass.getFields();
// for (Field field : fields) {
// System.out.println(field);
// }
//获取单个指定的公共成员变量
// Field address = studentClass.getField("address");
// System.out.println(address);
//获取非公共的
// Field[] declaredFields = studentClass.getDeclaredFields();
// for (Field declaredField : declaredFields) {
// System.out.println(declaredField);
// }
//获取单个非公共
// Field name = studentClass.getDeclaredField("address");
// System.out.println(name);
//同郭反射给属性赋值
Constructor<Student> constructor = studentClass.getConstructor();
Student student = constructor.newInstance();
Field[] declaredFields = studentClass.getDeclaredFields();
for (Field declaredField : declaredFields) {
declaredField.setAccessible(true);
}
declaredFields[0].set(student,"郭奉孝");
declaredFields[1].set(student,24);
declaredFields[2].set(student,"魏国");
System.out.println(student);
}
}