リフレクションを検討している開発者は、プライベート メソッドへのアクセスが必要なシナリオに遭遇することがよくあります。 Java では、従来のリフレクション メカニズムによるこれらのメソッドへの直接アクセスが制限されていますが、リフレクション ベースのメソッドによる回避策が提供されています。
解決策:
リフレクションを使用してプライベート メソッドを呼び出すには、提供されたコード スニペットを次のように変更します。
Element node = outerNode.item(0); String methodName = node.getAttribute("method"); String objectName = node.getAttribute("object"); if ("SomeObject".equals(objectName)) object = someObject; else object = this; // Use getDeclaredMethod to include both private and inherited methods Method method = object.getClass().getDeclaredMethod(methodName); // Enable access to the private method using setAccessible method.setAccessible(true); // Invoke the method and store the result Object r = method.invoke(object);
注意事項:
代替アプローチ:
メソッドのアクセシビリティを変更する場合、または PrivilegedAction を実装する場合 (以下で提案されているように)提供された回答) は実現不可能です。次の代替案を検討してください。
以上がJava リフレクションを使用してプライベート メソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。