java - 为什么 ArrayList.class.isInstance(ArrayList.class) 返回 false?

标签 java reflection

现在我正在思考并遇到对我来说不太清楚的行为。

Class<? extends List> listClass = ArrayList.class.asSubclass(List.class);

System.out.println(listClass.isInstance(ArrayList.class));  //print false
System.out.println(listClass.getSimpleName());// print ArrayList

抱歉,如果我的问题很愚蠢并且不是新问题,但我不明白为什么

listClass.isInstance(ArrayList.class) 返回 false,尽管

listClass.getSimpleName() 返回ArrayList

有人可以解释一下这种行为吗?提前致谢。

最佳答案

当您调用时:

listClass.isInstance(ArrayList.class)

您正在检查是否 ArrayList.classlistClass 的一个实例。但事实并非如此,它是 Class本身!

相反,请尝试:

listClass.isAssignableFrom(ArrayList.class);

或者,正如 Psehemo 在评论中提到的那样,使用 new ArrayList<>()作为您的参数。

关于java - 为什么 ArrayList.class.isInstance(ArrayList.class) 返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57203991/

相关文章:

java - 如何在运行时将 PatternLayout 添加到根记录器?

java - 从字符串中按名称获取变量

java - 反射getMethod不会引发异常

java - 在 Java 中使用 Class 类创建对象

reflection - TypeScript - 传递一个类作为参数,以及反射

Java:如何通过反射获取构造函数的钩子(Hook)/回调?

java - 使用 Sql 中的第一个组合框字符串值填充第二个组合框

java - 如何将连接返回到池

Java二进制转换器

java - 如何为导入语句创建自定义 IntelliJ 警告/错误?