首页 > 解决方案 > 为什么 ArrayList.class.isInstance(ArrayList.class) 返回 false?

问题描述

现在我正在玩反射和遇到对我来说不太清楚的行为。

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()返回数组列表

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

标签: javareflection

解决方案


你打电话时:

listClass.isInstance(ArrayList.class)

您正在检查是否ArrayList.classlistClass. 但它不是,它是一个Class自身!

相反,请尝试:

listClass.isAssignableFrom(ArrayList.class);

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


推荐阅读