我正在尝试编写类似框架的东西。我需要在我的计算机上搜索特定的文件夹,并能够获得所有实现我的接口的类文件。虽然我知道如何扫描文件夹并以某种方式检查所有类文件,但我无法检查读取类是否实现了我的接口。
if (Game.class.isAssignableFrom(classInFolder))
{
//Do sth here
}
这是我尝试过的一种方法,但它从不跳入 if 子句 - 游戏是我的界面
public interface Game {
public void startAlgorithm();
}
classInFolder 是我从文件夹中获得的 Class。有趣的是,如果我尝试对某些库接口做同样的事情 - 假设 Serializable 它工作正常 - 我试过了。更何况我写了这样的东西
Type[] type = classInFolder.getGenericInterfaces();
for (int i = 0;i<type.length;++i)
{
System.out.println("interface = " + type[i]);
if (type[i] instanceof Game){
System.out.println("It is");
}
}
我得到了我的控制台输出 - interface = mypackage.Game 但是没有“它是”输出。同样的事情是在我尝试使用的类上使用我自己的注释 - 我无法检查我的类是否实现了我的接口,但是当这些是来自某个库的接口时它可以工作。我将我的项目部署在 tomcat v 7.0 上,一切都是使用 Spring 在 Eclipse 上的 Java 7 上构建的。
对于可能发生的事情,我将不胜感激。