gpt4 book ai didi

java - 三元if-else的自动拆箱需求

转载 作者:行者123 更新时间:2023-12-01 07:15:15 25 4
gpt4 key购买 nike

这段代码工作正常:-

    Integer nullInt = null;
if (1 <= 3) {
Integer secondNull = nullInt;
} else {
Integer secondNull = -1;
}
System.out.println("done");

但这会引发空指针异常,而 Eclipse 警告需要自动拆箱:-
    Integer nullInt = null;
Integer secondNull = 1 <= 3 ? nullInt : -1;
System.out.println("done");

为什么会这样,有人可以指导吗?

最佳答案

三元条件表达式的类型

1 <= 3 ? nullInt : -1

int (JLS 包含几个表,根据第二个和第三个操作数的类型描述三元条件运算符的类型)。

因此,当它尝试拆箱时 nullIntint , NullPointerException被抛出。

为了获得 if-else 代码段的行为,您需要编写:
1 <= 3 ? nullInt : Integer.valueOf(-1)

现在表达式的类型将是 Integer ,因此不会进行拆箱。

关于java - 三元if-else的自动拆箱需求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60525084/

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