如何检查Class.forName()是否实现了特定的接口?

时间:2014-04-15 03:44:10

标签: java

我使用字符串获取类名,并使用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()但是既没有工作也没有抛出异常。请帮忙!

2 个答案:

答案 0 :(得分:1)

    Class c = Class.forName("java.io.FileInputStream");
if(c instanceof java.lang.AutoCloseable){
     //detected that FileInputStream implements AutoCloseable
}

Class c = Class.forName("java.io.FileInputStream");
if(java.lang.AutoCloseable.class.isAssignableFrom(c)){
     //detected that FileInputStream implements AutoCloseable
}

答案 1 :(得分:0)

尝试这样的事情

boolean isComparable = Comparable.class.isAssignableFrom(cls));