getDeclaredMethod
の代わりにgetMethod
を使用する必要があるようです。このClassオブジェクトが表すクラスまたはインタフェースの指定された宣言メソッドをリフレクトするMethodオブジェクトを返します
:
getDeclaredMethod
の全体のポイントは、それ
だけは、あなたが上でそれを呼び出しているクラスで宣言されているメソッドを見つけることです。
getMethod
一方
を有する:
Cは、任意のマッチング方法を探索します。一致するメソッドが見つからない場合は、ステップ1のアルゴリズムのみしかしパブリック方法を見出すであろうC.
のスーパークラスに再帰的に呼び出されます。あなたは後にしている方法は、公開されていない場合は、階層内の各クラスにgetDeclaredMethod
またはgetDeclaredMethods
を使用して、クラス階層を自分でアップ再帰する必要があります
Class<?> clazz = plugin.getClass();
while (clazz != null) {
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
// Test any other things about it beyond the name...
if (method.getName().equals("getFile") && ...) {
return method;
}
}
clazz = clazz.getSuperclass();
}
+1、私が持っていたよりも、よりよい解決策を。 – rgettman
助けがあれば、私がこれを使用している理由は、方法がプライベートであるためです。あなたは編集します。さて、私は編集をしようとします。 – PaulBGD
@Ultimate:そうです、それはかなり重要です。もしあなたがそれを最初に言及しておけば、それは助けになるでしょう。 –