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例外がスローされます。

bannerAds