现在我正在思考并遇到对我来说不太清楚的行为。
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.class
是 listClass
的一个实例。但事实并非如此,它是 Class
本身!
相反,请尝试:
listClass.isAssignableFrom(ArrayList.class);
或者,正如 Psehemo 在评论中提到的那样,使用 new ArrayList<>()
作为您的参数。
关于java - 为什么 ArrayList.class.isInstance(ArrayList.class) 返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57203991/