有没有办法将原始类型与其对应的包装类型进行比较?
Is there a way to compare a primitive type with its corresponding wrapper type?
我有一个对象 ArrayList ArrayList<Object> arrList
,其中包含各种基元的包装器 类 以及类型参数 Parameter[] parameters
的数组
两者的元素数量相同。我想循环遍历参数的元素,比较它们的类型是否与arrList中的相同。
我知道有很多方法可以将 int 与 Integer.lang.Integer 进行比较,例如简单地将 int 转换为 Integer 然后进行比较,但我的 Parameter[] 有 ints、booleans、floats 等,而我的 ArrayList 有 Integers ,浮点数,布尔值等,所以我并不总是确定值是多少。
我不认为我真的理解基元是如何表示的。例如,我假设以下语句 return 为真,但事实并非如此:
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();
}
}
但比较总是 return 错误,即使将 boolean.class 与 Boolean.getClass()
进行比较也是如此
感谢任何 help/advice
您可以使用每个包装器 class 都有的静态字段 TYPE
。 (source)
for(int i=0; i<parameters.length; i++){
if(parameters[i].getType()==arrList.get(i).getClass().getField("TYPE").get(null)){
doSomething();
}
}
您也可以比较小写 class 名称,但您必须将 int
和 char
作为特殊情况处理。
或者,您可以在原始 classes 和包装器 classes 之间创建一个 Map<Class, Class>
。
我有一个对象 ArrayList ArrayList<Object> arrList
,其中包含各种基元的包装器 类 以及类型参数 Parameter[] parameters
两者的元素数量相同。我想循环遍历参数的元素,比较它们的类型是否与arrList中的相同。
我知道有很多方法可以将 int 与 Integer.lang.Integer 进行比较,例如简单地将 int 转换为 Integer 然后进行比较,但我的 Parameter[] 有 ints、booleans、floats 等,而我的 ArrayList 有 Integers ,浮点数,布尔值等,所以我并不总是确定值是多少。 我不认为我真的理解基元是如何表示的。例如,我假设以下语句 return 为真,但事实并非如此:
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();
}
}
但比较总是 return 错误,即使将 boolean.class 与 Boolean.getClass()
进行比较也是如此感谢任何 help/advice
您可以使用每个包装器 class 都有的静态字段 TYPE
。 (source)
for(int i=0; i<parameters.length; i++){
if(parameters[i].getType()==arrList.get(i).getClass().getField("TYPE").get(null)){
doSomething();
}
}
您也可以比较小写 class 名称,但您必须将 int
和 char
作为特殊情况处理。
或者,您可以在原始 classes 和包装器 classes 之间创建一个 Map<Class, Class>
。