Java reflection and interface as parameter

2019-09-03 16:54发布

I'm trying to invoke a method via reflection. The method in question, let's say

public void someMethod(someInterface<someObject> arg1)

I do not have access to someMethod and someInterface at runtime, and have to invoke by

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

But it fails with a ClassNotFound exception for someInterface. How do I get the Class object for interfaces?

2条回答
Animai°情兽
2楼-- · 2019-09-03 17:09

That looks correct to me, conceptually. Check these things:

  • Is the interface on the classpath at run time?
  • Is the interface public (not package private)
  • Is the interface really in the default package (you have to fully qualify it)

Last but not least ;-)

  • Check your spelling (case-sensitive)
查看更多
爷的心禁止访问
3楼-- · 2019-09-03 17:25

I believe that you forgot the interface's package. You have to use fully qualified class name when you are calling Class.forName(), i.e. Class.forName('com.mycompany.MyClass')

查看更多
登录 后发表回答