import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
class Person {
private String name;
private int age;
private Person(String name, int age) {
this.name = name;
this.age = age;
}
private void sayHello() {
System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
}
public static void main(String[] args) throws Exception {
// 获取Person类的Class对象
Class<?> personClass = Class.forName("Person");
// 获取私有构造方法
Constructor<?> constructor = personClass.getDeclaredConstructor(String.class, int.class);
constructor.setAccessible(true); // 设置构造方法可访问
// 创建Person对象
Object personInstance = constructor.newInstance("Alice", 25);
// 获取私有方法
Method sayHelloMethod = personClass.getDeclaredMethod("sayHello");
sayHelloMethod.setAccessible(true); // 设置方法可访问
// 调用私有方法
sayHelloMethod.invoke(personInstance);
}
}
Class.forName("Person")获取Person类的Class对象。getDeclaredConstructor方法获取Person类的私有构造方法,并通过setAccessible(true)使其可访问。newInstance方法创建Person类的实例。getDeclaredMethod方法获取Person类的私有方法,并通过setAccessible(true)使其可访问。invoke方法调用Person类的私有方法。这段代码展示了如何使用Java反射机制来访问和调用类的私有构造方法和私有方法。
上一篇:java初始化数组
下一篇:java map 排序
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站