【问题标题】:Java reflection and interface as parameterJava反射和接口作为参数
【发布时间】:2010-12-23 07:14:10
【问题描述】:

我正在尝试通过反射调用方法。有问题的方法,让我们说

public void someMethod(someInterface<someObject> arg1)

我在运行时无权访问someMethodsomeInterface,必须通过调用

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

但它失败并出现 someInterface 的 ClassNotFound 异常。如何获取接口的Class 对象?

【问题讨论】:

标签: java reflection interface


【解决方案1】:

我相信你忘记了接口的包。调用 Class.forName() 时必须使用完全限定的类名,即 Class.forName('com.mycompany.MyClass')

【讨论】:

  • 你说的太对了。我正在努力弄清楚如何为接口获取 Class,而我只是忘记了我需要一个完全限定的名称!
【解决方案2】:

从概念上讲,这对我来说是正确的。检查这些事情:

  • 接口在运行时是否在类路径中?
  • 接口是否公开(不是包私有)
  • 接口是否真的在默认包中(你必须完全限定它)

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

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

【讨论】:

    猜你喜欢
    • 2016-04-16
    • 2022-01-19
    • 2011-04-03
    • 2013-01-20
    • 1970-01-01
    • 2016-06-16
    • 2019-08-25
    • 1970-01-01
    • 2011-12-18
    相关资源
    最近更新 更多