java - 为什么 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()
返回数组列表
有人可以解释这种行为吗?提前致谢。
解决方案
你打电话时:
listClass.isInstance(ArrayList.class)
您正在检查是否ArrayList.class
是listClass
. 但它不是,它是一个Class
自身!
相反,请尝试:
listClass.isAssignableFrom(ArrayList.class);
或者,正如 Psehemo 在评论中提到的那样,new ArrayList<>()
用作您的参数。
推荐阅读
- python - 透视数据框的想法:从长到宽
- php - 将 XAMPP 移动到另一个目录后的配置?
- javascript - 使 div 停留在 div 下方的某个位置,该位置以编程方式增加高度
- json - 从 html 标记中获取值并以字符串类型保存在 python 字典中
- reactjs - Primereact 树上下文菜单在操作后不隐藏
- html - 如何使当我选中一个单选按钮时,在 React 中取消选中同一表单中的另一个单选按钮?
- arrays - golang字节和字符串有时兼容有时不兼容
- kubernetes - Kubernetes 中 dns 服务的 Coredns 依赖项
- javascript - 是否可以使用 js 之类的东西在 HTML 中加载导航栏?它是通过 Github Pages 托管的,所以没有任何服务器端可以工作
- php - 即使条件为真,Mysql 查询也返回假