2010-12-23 40 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

从概念上讲,这看起来是正确的。检查这些东西:

  • 是运行时类路径上的接口?
  • 是接口市民(不包专用)
  • 在默认的包确实接口(你必须完全限定它)

最后但并非最不重要;-)

  • 检查你的拼写(区分大小写)