【问题标题】:Java - How to find the interfaces extended by a particular interface or the super interface nameJava - 如何查找由特定接口或超接口名称扩展的接口
【发布时间】:2014-08-26 10:35:37
【问题描述】:

需要帮助...

我需要找出特定接口扩展的接口或(超级

接口名称)

比如说,我有三个接口 I1、I2、I3。 I1 扩展了 I2 和 I3。一个类,MyClass 扩展了 I1。

在 Java 中使用反射,我可以获得 I1,但如何获得由 I1 扩展的接口,即 I2 和 I3。

请发送一些代码以找出超级接口名称。即 I2 和 I3

提前谢谢...

【问题讨论】:

    标签: java reflection interface extends


    【解决方案1】:

    你可以做同样的事情 - 正如我假设的那样 - 你已经在为你的班级做:

    I1.class.getInterfaces();
    

    来自 JavaDoc:

    如果此对象表示一个接口,则该数组包含表示该接口扩展的所有接口的对象。

    请注意,这将是直接扩展接口,因此如果 I1 扩展 I2 并且 I2 扩展 I3,那么您必须多次调用该方法。

    【讨论】:

    • 你是在说interfaces[i].getClass().getInterfaces()); 之类的东西,其中interfaces[i] 包含完全限定的接口名称。输出为[Ljava.lang.Class;@1dd0eb0b。这是你的建议还是我弄错了。
    • @ProtoyBagchi 取决于你在做什么(你没有指定)。这里有几件事: 1. interfaces[i] 不是 完全限定名称,而是代表 JVM 中该接口的类对象。 2. 如果你调用System.out.prinltn( interfaces[i].getClass().getInterfaces() ),你会得到你描述的输出,因为这将调用数组的toString() 方法。如果您只是打印,请改用Arrays.toString( ... )。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2023-03-22
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    相关资源
    最近更新 更多