gpt4 book ai didi

java - 比较两个整数 'Unnecessary unboxing' 警告

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:47 27 4
gpt4 key购买 nike

我尝试用下一种方式比较整数(对于我来说,这很好):

public void compareMayNull(Integer a, Integer b) {
if ((a == null ? -1 : a.intValue()) == b.intValue())
System.out.println("true");
}

IntelliJ IDEA 在 a.intValue()b.intValue() 上给我警告“不必要的拆箱”,并建议我将代码简化为:

public void compareMayNull(Integer a, Integer b) {
if ((a == null ? -1 : a) == b)
System.out.println("true");
}

但我有点困惑,因为如果 a != null 引用将被比较,这不是我所知道的最佳实践。我应该使用什么代码?

最佳答案

因为你有一个 -1 literal,它是一个 int 类型,a 将是 自动拆箱,(当且仅当 a == nullfalse 否则不评估表达式)在三元条件的评估中

a == null ? -1 : 一个;

然后因为这个表达式int类型,b也是自动拆箱

因此您可以编写 if ((a == null ? -1 : a) == b),因为 Java 会自动拆箱 ab。因此,您通过调用 intValue() 显式拆箱是多余的,您的 IDE 会警告您这一点。为避免疑义,a 在计算表达式 a == null不会自动拆箱。

我个人认为这是 Java 中最有害的部分之一。我会认真考虑按照您原来的方式编写它,并告诉您的 IDE 接受它。

关于java - 比较两个整数 'Unnecessary unboxing' 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40481925/

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