【问题标题】:Check if class implements interface given the class name [duplicate]检查类是否实现给定类名的接口[重复]
【发布时间】:2018-09-07 02:28:37
【问题描述】:

给定

String className = "com.example.MyClass";

如何检查此类是否实现了特定接口?

我试过了

Class myClass = Class.forName(className);
if (myClass instanceof MyInterface) {}

if (myClass.isInstance(MyInterface.class)) {}

但两者都不起作用 - 显然 Class 对象不继承 MyInterface

检查一个类是否实现了只给定类名的接口的正确方法是什么?

【问题讨论】:

  • 在重复链接中尝试完全接受的答案,如果仍然无法使用,请发表评论,有人可以重新打开您的问题。
  • @TimBiegeleisen 我不同意 - 提供的链接显示了如何加载类但不检查其超类型。你是在告诉我,我需要先加载一个新的类实例,然后才能检查它的超值吗?
  • 是的,我假设这个。 AFAIK instanceof 检查 object 是否是另一个类的实例。你从来没有创建过一个对象,这就是为什么我说要准确地尝试接受的答案,如果它仍然不起作用,然后记下。
  • 啊,这很有意义 - 我希望有一种方法可以做到这一点,而不必加载新的实现实例。感谢您的澄清
  • 我没有复制你的答案,我打算回答,但我觉得我只是在复制别人的答案,可能会更改 1-2 行。但希望您的问题现在得到解决。

标签: java


【解决方案1】:

您可以使用Class.isAssignableFrom(Class)

if (MyInterface.class.isAssignableFrom(myClass)) {
  ...
}

【讨论】:

  • 嘿——看看我在做什么,意识到我考错了课(掌心)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2010-09-21
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多