2010-12-23 72 views
0

我想通過反射調用一個方法。問題的方法,讓我們說Java反射和接口作爲參數

public void someMethod(someInterface<someObject> arg1) 

我沒有在運行時訪問someMethodsomeInterface,並請有

someclass.getMethod("someMethod", new Class[]{Class.forName("someInterface")}) 
     .invoke(...) 

調用,但失敗了ClassNotFound的例外someInterface。我如何獲得接口的Class對象?

+0

可能的重複:http://stackoverflow.com/questions/10635025/classnotfound-exception-using-java-reflection – RAS 2012-09-25 06:13:05

回答

1

我相信你忘了界面的包裝。當您調用Class.forName()時,您必須使用完全限定的類名稱,即Class.forName('com.mycompany.MyClass')

+0

Y你是對的。我拉着頭髮試圖弄清楚如何獲得Class接口,而我只是忘記了我需要一個完全合格的名字! – polyglot 2010-12-23 07:47:50

+0

祝你有美好的一天。快樂反思! – AlexR 2010-12-23 07:48:38

2

從概念上講,這看起來是正確的。檢查這些東西:

  • 是運行時類路徑上的接口?
  • 是接口市民(不包專用)
  • 在默認的包確實接口(你必須完全限定它)

最後但並非最不重要;-)

  • 檢查你的拼寫(區分大小寫)