2
我正在使用该字符串来获取一个Class名称并使用Class.forName()来获得一个Class。如何检查Class.forName()是否实现了特定的接口?
现在我想知道这个类是否是另一个类的实例(在这种情况下是java.lang.AutoCloseable)。
我的代码是
Class c = Class.forName("java.io.FileInputStream");
if(c instanceof java.lang.AutoCloseable){
//detected that FileInputStream implements AutoCloseable
}
但它似乎并没有工作。我也尝试过c.newInstance()和c.getClass()。newInstance(),但都不工作并抛出异常。请帮忙!
尽量考虑看看['类#isInstance'(http://docs.oracle.com/javase/ 7/docs/api/java/lang/Class.html#isInstance(java.lang.Object))还是[Class#isAssignableFrom'](http://docs.oracle.com/javase/7/docs/ API/JAVA/LANG/Class.html#isAssignableFrom(java.lang.Class中))...? – MadProgrammer
正如我们所期望的那样,'instanceof'的左操作数是一个对象_instance_,而不是'Class >'的类或实例。要测试类本身,你应该使用'java.lang.Class'的'isAssignableFrom()'方法 –