【问题标题】:To check a class or an interface implements or extends a particular interface检查类或接口实现或扩展特定接口
【发布时间】:2015-02-16 05:48:17
【问题描述】:

我想获取所有实现或扩展 Externalizable 接口的类或接口。同样,我使用了

Externalizable.class.isAssignableFrom(clasz)

但我的意图是只获取实现或扩展 Externalizable 的类或接口。如果 Externalizable 不是 第一级 的超类或超接口,我不需要 clasz。如果有人可以帮助我解决问题,那就太好了。

【问题讨论】:

  • 你已经有了它,除了它会为 Externalizable 本身评估为 true 的事实。是什么让您认为对于 Externalizable 的超类或超接口,您的陈述将评估为 true?好像你把the isAssignableFrom() documentation的意思颠倒了。
  • 假设我有一个扩展 Externalizable 的接口 A 和一个实现 A 的类 B 。那么我只需要接口A作为结果,我不需要结果中的B类。
  • 所以你只想要 Externalizable 的直接(第一层)后代?
  • 没错..!!!有什么方法可以得到相同的吗?

标签: java class inheritance interface


【解决方案1】:

听起来您只需要直接实现Externalizable 的类和接口。

Class<?>[] interfaces = clasz.getInterfaces();
for (Class<?> c: interfaces) {
    if (c.equals(Externalizable.class)) {
        // clasz is a direct descendent of Externalizable
    }
}

如果您只需要了解 Java 标准版中的实现者,他们在Externalizable javadoc 中列出。

【讨论】:

    猜你喜欢
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多