作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个对象的ArrayList ArrayList<Object> arrList
包含各种原语的包装类以及参数 Parameter[] parameters
类型的数组
两者具有相同数量的元素。我想循环遍历参数的元素并比较它们的类型与arrList中的相同。
我意识到有很多方法可以将 int 与 Integer.lang.Integer 进行比较,例如简单地将 int 转换为 Integer,然后进行比较,但我的 Parameter[] 有整数、 boolean 值、 float 等,而我的 ArrayList 有整数、 float 、 boolean 值等,所以我并不总是确定其值是什么。我认为我并不真正理解基元是如何表示的。例如,我假设以下语句将返回 true,但事实并非如此:
Boolean bool=true;
System.out.println(boolean.class==bool.getClass());
我有相关的代码:
for(int i=0; i<parameters.length; i++){
if(parameters[i].getType()==arrList.get(i).getClass()){
doSomething();
}
}
但即使将 boolean.class 与 Boolean.getClass() 进行比较,该比较也始终返回 false
感谢您的帮助/建议
最佳答案
您可以使用静态字段 TYPE
每个包装类都有。 (source)
for(int i=0; i<parameters.length; i++){
if(parameters[i].getType()==arrList.get(i).getClass().getField("TYPE").get(null)){
doSomething();
}
}
您还可以比较小写的类名,但您必须处理 int
和char
作为特殊情况。
或者,您可以创建 Map<Class, Class>
原始类和包装类之间。
关于java - 有没有办法将原始类型与其相应的包装类型进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54446200/
我是一名优秀的程序员,十分优秀!