たとえば、フィールド(myField)を持つクラス(A)があります。フィールドmyFieldのタイプは、インタフェース(I)です。すべてが公開されています。Java Reflection:フィールドがInterface Typeのフィールドの値を取得
* myField *のタイプのクラスのメソッドを呼び出す必要があります。私のコードは次のとおりです:
Field myField = getField(myClass, "fieldName");
Class fieldClass = myField.getType(); // returns I
try {
Class[] params = {String.class};
Method method = fieldClass.getMethod("methodName", params);
Object[] paramsObj = {new String("input")};
boolean result = (Boolean) method.invoke(WHAT_MUST_I_PUT_HERE, paramsObj);
} catch...
あなたは問題が、私はのようなことを行うことができないで見ることができるように:誰かが私を助けることができる
WHAT_MUST_I_PUT_HERE = myField.getClass() // returns Field
?
EDIT:私は
TargetClass o = (TargetClass) myField.get(myClass)
を使用しようとしたが、invoke
メソッドの最初の引数は、単にメソッドを呼び出すことでオブジェクトではIllegalArgumentException
は即答いただきありがとうございます。私はこれを試してみる。 – Dmitry
その解決策は機能しません。 java.lang.IllegalArgumentExceptionが発生しました:オブジェクトがクラス宣言のインスタンスではありません – Dmitry
myFieldにフィールド型があると考えています – Dmitry