确定一个类是否在Java中实现了一个接口

新手上路,请多包涵

我有一个 Class 对象。我想确定 Class 对象表示的类型是否实现了特定接口。我想知道这是如何实现的?

我有以下代码。基本上它所做的是获取指定包中所有类的数组。然后我想遍历数组并将实现接口的 Class 对象添加到我的地图。问题是 isInstance() 将对象作为参数。我无法实例化接口。所以我有点不知所措。有任何想法吗?

 Class[] classes = ClassUtils.getClasses(handlersPackage);
for(Class clazz : classes)
{
    if(clazz.isInstance(/*Some object*/)) //Need something in this if statement
    {
        retVal.put(clazz.getSimpleName(), clazz);
    }
}

原文由 user489041 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 617
2 个回答

你应该使用 isAssignableFrom

 if (YourInterface.class.isAssignableFrom(clazz)) {
    ...
}

原文由 Flavio 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用以下函数获取所有已实现的接口

Class[] intfs = clazz.getInterfaces();

原文由 Ankur 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题