Javaリフレクションでプライベートメソッドを取得する方法は何ですか?
Javaリフレクションでは、getDeclaredMethod()メソッドを使用して、非公開メソッドを取得することができます。getDeclaredMethod()メソッドは、指定された名前とパラメータータイプのメソッドを取得することができ、非公開メソッドも含まれます。
以下是一个示例代码,展示了如何利用反射获取和调用私有方法的方式。
import java.lang.reflect.Method;
public class ReflectionExample {
private void privateMethod() {
System.out.println("私有方法被调用");
}
public static void main(String[] args) throws Exception {
// 获取类的Class对象
Class<ReflectionExample> clazz = ReflectionExample.class;
// 获取指定名称的私有方法
Method privateMethod = clazz.getDeclaredMethod("privateMethod");
// 设置私有方法可访问
privateMethod.setAccessible(true);
// 创建类的实例
ReflectionExample example = clazz.newInstance();
// 调用私有方法
privateMethod.invoke(example);
}
}
上記のコードでは、getDeclaredMethod()メソッドがprivateMethod()メソッドを取得するために使用され、setAccessible(true)メソッドがプライベートメソッドへのアクセスを可能にするために使用され、invoke()メソッドがプライベートメソッドを呼び出すために使用されます。
注意:プライベートメソッドをリフレクションで呼び出す際は、プライベートメソッドのアクセス権を設定する必要があります。そうでないと、IllegalAccessException例外がスローされます。