gpt4 book ai didi

Java 自动装箱和条件运算符

转载 作者:行者123 更新时间:2023-12-02 00:44:22 26 4
gpt4 key购买 nike

在 Sonar 中,我看到代码的重大违规警告

  public Long getValue(FieldType fieldType) {
Long value = paramLevelMap.get(fieldType); // ok returns Long not long
return value == null ? UNSPECIFIED_PARAMETER_KEY : value; // complaints here
}

其中“UNSPECIFIED_PARAMETER_KEY”是 pvt static long ,“value”也是 long。

Boxed value is unboxed and then immediately reboxed

它在第二行提示。我不太明白,原始 long 何时以及如何转换为相应的类对象?然后回来?

最佳答案

三元(或更准确地说,条件)表达式的返回类型是原语的返回类型,其中第二个和第三个操作数由一个原语和一个相应的装箱版本组成。
(有关条件运算符类型的完整分析,请参阅 the Java Specifications 15.25 。)

由于此处的第二个操作数 UNSPECIFIED_PARAMETER_KEY 是一个 long,而第三个操作数 value 是一个 Long >,Java 必须将 value 拆箱为 long 才能计算表达式。

此后,将返回一个Long,因此value立即重新装箱。

您可以通过将常量 UNSPECIFIED_PARAMETER_KEY 更改为 Long 来解决此问题。

关于Java 自动装箱和条件运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16856998/

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