リフレクションによるプライベート メソッドへのアクセスに対する Java の制限にもかかわらず、この制限を克服するソリューションが存在します。リフレクション経由でプライベート メソッドを呼び出すには、次のアプローチを利用できます。
まず、getMethod(String methodName) の代わりに getDeclaredMethod(String methodName) を使用して プライベート メソッド を取得します。このメソッドにより、現在のクラス内で宣言されたパブリック メソッドとプライベート メソッドの両方にアクセスできます。
次に、プライベート メソッドに対するデフォルトのアクセス制限を回避するには、setAccessible(boolean unavailable) メソッドを使用してアクセシビリティを付与します。 accessible を true に設定すると、保護設定がオーバーライドされ、プライベート メソッドの呼び出しが許可されます。
最後に、目的のオブジェクトと必要なオブジェクトを指定して invoke(Object object, Object... args) を使用してプライベート メソッドを呼び出します。 argument.
これは、オリジナルで提供されているコードの更新バージョンです。質問:
Method method = object.getClass().getDeclaredMethod(methodName); method.setAccessible(true); Object r = method.invoke(object);
警告:
以上がアクセス制限があるにもかかわらず、Java でリフレクションを使用してプライベート メソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。