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 clazz = Student.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);
}
}
555

posted @ 2026-06-21 00:27  冰蝶王子  阅读(3)  评论(0)    收藏  举报