-1

オブジェクトのリストを返すメソッドがあり、メソッド クラスの呼び出しメソッドで呼び出したいと考えています。唯一の問題は、invoke メソッドが ではObjectなく を返すことlist<Object>です。

コードは次のとおりです。

Class<? extends AnObject> anObject = MyObject.getClass();
Method myMethod = MyObject.getMethod("getListObject"); 
Object objject = method.invoke(MyObject); // I want it to return list

どうすれば解決できますか?

4

6 に答える 6

1
Class<? extends AnObject>  anObject = MyObject.getClass();
Method myMethod = MyObject.getMethod("getListObject"); 
List object = (List)myMethod.invoke(anObject);
于 2011-07-21T07:55:05.647 に答える
0

dp4jの注釈プロセッサにそれを理解させるのはどうですか?

@com.dp4j.Reflect //or @org.junit.Test
public void test(){
  Object objject =  MyObject.getListObject();
}

挿入されたコードを で印刷することもできます-Averbose=true

于 2011-07-25T19:28:58.627 に答える
0

型キャストするだけです:

List list = (List)method.invoke(...);
于 2011-07-21T07:54:32.117 に答える
0

結果を希望する型に明示的にキャストできます。

List<?> theList = (List<?>) method.invoke(anObject, new Object[] {})

ClassCastExceptionメソッドが期待した型を返さない場合、実行時にエラーが発生する可能性があります。

于 2011-07-21T07:55:30.010 に答える
0

このページにたどり着いた理由は

アクセス可能にせずに保護されたメソッドを呼び出そうとしたとき

私の現在の作業バージョンを見てください

DoPubService service = SpringAdapter.getBean("frontendDoPubService", DoPubService.class);
try {
    Method runUrlReplacerMethod = service.getClass().getDeclaredMethod("runUrlReplacer", String.class, String.class, String.class);

    return runUrlReplacerMethod.invoke(service, "10.21019/qna-900031", "abs", explanation);
 } catch (Exception e) {
    e.printStackTrace();
}

メソッドがそのAccessibleinvokingにある必要があるため、これは機能しません

runUrlReplacerMethod.setAccessible(true);
于 2017-03-15T18:13:04.140 に答える