gpt4 book ai didi

java - 有没有办法将原始类型与其相应的包装类型进行比较?

转载 作者:行者123 更新时间:2023-12-02 10:19:30 27 4
gpt4 key购买 nike

我有一个对象的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();
}
}

您还可以比较小写的类名,但您必须处理 intchar作为特殊情况。

或者,您可以创建 Map<Class, Class>原始类和包装类之间。

关于java - 有没有办法将原始类型与其相应的包装类型进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54446200/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com