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

标签 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() 但既没有工作也没有抛出异常。请帮忙!

最佳答案

    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
}

关于java - 如何检查 Class.forName() 是否实现了特定接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23074292/

相关文章:

java - 哪个 Java 数据库 API 最容易使用?

java - Ant foreach 避免空变量

java - 开源 java XSLT 2.0 实现?

java - 在 Mac OS X 上使用 JDBC 建立 SSH 隧道 - 问题

java - 如何为多个数据源创建/配置 Spring Actuator?

java - 如何将 groovy dsl 脚本从一个 groovy 文件包含到另一个文件

java - 在 Java 中并行地同时处理两个任务

java - 使用下划线作为分隔符在 Java 中拆分字符串

java - 如何在 Java 中打开带有 anchor 的 URL?

java - 无法从java连接到mysql服务器