繁体   English   中英

确定Class是否在Java中实现接口

[英]Determine if a Class implements a interface in 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);
    }
}

你应该使用isAssignableFrom

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

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

Class[] intfs = clazz.getInterfaces();

您可以使用class.getInterfaces()然后检查接口类是否在那里。

Class someInterface; // the interface you want to check for 
Class x; // 
Class[] interfaces = x.getInterfaces();

for (Class i : interfaces) {
    if (i.toString().equals(someInterface.toString()) {
        // if this is true, the class implements the interface you're looking for
    }
}

您还可以设置添加“.class”的实例

Class[] classes = ClassUtils.getClasses(handlersPackage);
for(Class clazz : classes)
{
    if(Interface.class.isAssignableFrom(clazz))
    {
        retVal.put(clazz.getSimpleName(), clazz);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM