【发布时间】: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