java反射机制
// 测试实体类
class Student {
private String name;
public int age;
// 构造
public Student() {}
public Student(String name) { this.name = name; }
// 私有方法
private void showInfo() {
System.out.println("学生name:"+name+" age:"+age);
}
}
public class ReflectDemo {
public static void main(String[] args) throws Exception {
// 1. 获取Class对象(三种方式)
Class
// Class clazz2 = new Student().getClass();
// Class clazz3 = Class.forName("Student");
// 2. 创建对象
Student stu = clazz.newInstance();
// 有参构造创建
Student stu2 = clazz.getConstructor(String.class).newInstance("小明");
// 3. 操作私有属性
Field nameField = clazz.getDeclaredField("name");
nameField.setAccessible(true); // 暴力破解私有
nameField.set(stu, "小红");
// 4. 调用私有方法
Method showMethod = clazz.getDeclaredMethod("showInfo");
showMethod.setAccessible(true);
showMethod.invoke(stu);
}
}

浙公网安备 33010602011771号