我有一个对象ArrayList<Object> arrList
的ArrayList,其中包含各种基元的包装器类以及参数类型Parameter[] parameters
的数组
两者具有相同数量的元素。我想遍历参数的元素,并比较它们的类型与arrList中的类型相同。
我意识到有很多将Integer与Integer.lang.Integer进行比较的方法,例如简单地将int转换为Integer然后进行比较,但是我的Parameter []具有int,booleans,floats等,而ArrayList具有Integers,Floats ,布尔值等,因此我并不总是确定该值是多少。 我不认为我真的了解基元如何表示。例如,我假设以下语句将返回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。
感谢您的帮助/建议
答案 0 :(得分:1)
您可以使用每个包装器类都具有的静态字段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>
。