我有一个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);
}
}
Run Code Online (Sandbox Code Playgroud)
Fla*_*vio 199
你应该使用isAssignableFrom:
if (YourInterface.class.isAssignableFrom(clazz)) {
...
}
Run Code Online (Sandbox Code Playgroud)
Ank*_*kur 16
您可以使用以下函数来获取所有已实现的接口
Class[] intfs = clazz.getInterfaces();
Run Code Online (Sandbox Code Playgroud)
Rod*_*eas 10
您可以使用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
}
}
Run Code Online (Sandbox Code Playgroud)