Javaでprivateメソッドを呼び出す方法はありますか?
Javaでは、プライベートメソッドを呼び出すためにリフレクション機構を使用することができます。
最初に、Classオブジェクトを取得する必要があります。Class.forName()メソッドを使用してクラスの完全修飾名を渡すことで、Classオブジェクトを取得することができます。または、クラス名.classを直接使用する方法もあります。
その後、getDeclaredMethod()メソッドを使用して特定のメソッドを取得します。メソッド名とパラメータの型を指定する必要があります。
次に、メソッドへのアクセス権を設定するために、setAccessible(true)メソッドを使用して、メソッドのアクセス権をtrueに設定します。これにより、privateメソッドにアクセスできるようになります。
最後に、invoke()メソッドを使用してメソッドを呼び出します。メソッドのオブジェクト(静的メソッドの場合はnullを渡す)とメソッドの引数を渡す必要があります。
以下はサンプルコードです。
import java.lang.reflect.Method;
public class Main {
private void privateMethod() {
System.out.println("调用了私有方法");
}
public static void main(String[] args) throws Exception {
Class<?> clazz = Class.forName("Main");
Method method = clazz.getDeclaredMethod("privateMethod");
method.setAccessible(true);
Main instance = new Main();
method.invoke(instance);
}
}
これにより、privateメソッドを成功補完できます。