【发布时间】:2019-06-24 01:33:48
【问题描述】:
我有一个对象数组列表ArrayList<Object> arrList,其中包含各种原语的包装类以及参数类型Parameter[] parameters 的数组
两者具有相同数量的元素。我想循环遍历参数的元素并比较它们的类型与arrList中的相同。
我意识到有很多方法可以将 int 与 Integer.lang.Integer 进行比较,例如简单地将 int 转换为 Integer,然后进行比较,但我的 Parameter[] 有整数、布尔值、浮点数等,而我的 ArrayList 有整数、浮点数,布尔值等,所以我并不总是确定值是什么。 我不认为我真的了解原语是如何表示的。例如,我假设以下语句会返回 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
感谢任何帮助/建议
【问题讨论】:
-
一个
Boolean对象将返回Boolean.class到getClass()。 -
boolean.class和Boolean.class这两个类是不同的。boolean.class通常仅在使用反射时使用,因为它表示原始boolean参数和返回类型。