XMLとリフレクションを使用して別のクラスにObject
を返すクラスがあります。プライベートメソッドを呼び出す方法はありますか?
通常、これらのオブジェクトは外部オブジェクトのサブフィールドですが、ときどき生成したいものです。私はこのようなものを試しましたが、役に立たないものです。私はそれはJavaがあなたに反射のためのprivate
メソッドにアクセスすることを許可しないためだと思います。
Element node = outerNode.item(0);
String methodName = node.getAttribute("method");
String objectName = node.getAttribute("object");
if ("SomeObject".equals(objectName))
object = someObject;
else
object = this;
method = object.getClass().getMethod(methodName, (Class[]) null);
提供方法がprivate
であれば、それはNoSuchMethodException
で失敗します。メソッドpublic
を作成するか、それを派生させる別のクラスを作成して解決できます。
私はちょうどリフレクションによってprivate
メソッドにアクセスする方法があるかどうか疑問に思っていました。
私は過去にこれをやったときに、メソッドを呼び出した後にmethod.setAccessible(false)も呼びましたが、これが必要かどうかはわかりません。 – shsteimer
いいえ、ユーザー補助機能を設定すると、そのインスタンスにのみ適用されます。特定のMethodオブジェクトをコントロールから逃さない限り、安全です。 – erickson
私は絶対にあなたが仲良しの愛を反転させます。恐ろしい答え+悪いコード==あまりにも悪い日。 – droope