在声纳中,我看到代码的主要违规警告
public Long getValue(FieldType fieldType) {
Long value = paramLevelMap.get(fieldType); // ok returns Long not long
return value == null ? UNSPECIFIED_PARAMETER_KEY : value; // complaints here
}
其中'UNSPECIFIEDpa_PARAMETER_KEY'是pvt static long,'value'也很长。
装箱值未装箱,然后立即重新装箱
它在第二行抱怨。我不太明白,当&如何将原始长度转换为相应的类对象?又回来了?
答案 0 :(得分:6)
三元组(或更准确地说,条件)表达式的返回类型,其中第二个和第三个操作数由一个基元和一个对应的盒装版本组成,是基元的返回类型。
(有关条件运算符类型的完整分析,请查看the Java Specifications 15.25。)
由于此处的第二个操作数UNSPECIFIED_PARAMETER_KEY
是long
,第三个操作数value
是Long
,因此Java必须将value
取消设置为long
Long
来评估表达式。
在此之后,系统会返回value
,因此会立即重新装箱UNSPECIFIED_PARAMETER_KEY
。
您可以将常量Long
更改为{{1}}来解决此问题。