我有一个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);
}
}
Class
实例将不兼容。你可能会看到类似于java.lang.ClassCastException: com.my.CustomClass cannot be cast to com.my.CustomClass
的错误,或者其他类似的莫名其妙的错误。 - FlaviomyClassLoader = new URLClassLoader(new URL[] { candidateFile.toURI().toURL() }, LoadedPlugin.class.getClassLoader());
和classToLoad = Class.forName("com.blablabla.plugin.Main", true, myClassLoader);
和instance = (MyIntf) classToLoad.newInstance();
它工作得很好。 - Dreamspace President