java装箱值被解除装箱,然后立即重新装箱
我在解决Sonaqube问题,在这个问题上,我面临一个吼叫错误,但无法理解这是什么样的错误
这是我的实体课程
@Entity
@Cacheable
@DynamicUpdate
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Table(name = Vendor.TABLE_NAME)
public class Vendor
{
@Column(name = VENDOR_MODIFIED_BY_FOREIGN_KEY, nullable = true)
private Integer modifiedBy;
public Integer getModifiedBy() {
return modifiedBy == null ? 0 : modifiedBy;
//Boxed value is unboxed and then immediately reboxed in com.bostonbyte.thelift.entities.vendors.Vendor.getModifiedBy()
}
public void setModifiedBy(Integer modifiedBy) {
this.modifiedBy = modifiedBy;
}
我在
public Integer getModifiedBy() {
return modifiedBy == null ? 0 : modifiedBy;
你能告诉我这是什么样的错误吗
# 1 楼答案
嗯,
modifiedBy
是一个Integer
,但是三元条件表达式modifiedBy == null ? 0 : modifiedBy
的类型是int
(这是当第二个操作数是int
,第三个操作数是Integer
,as you can see in table 15.25-C. of the JLS时的条件表达式类型)因此
modifiedBy
被解绑到int
以评估该表达然后再次将其装箱到
Integer
,因为这是getModifiedBy()
方法的返回类型您可以将该方法的返回类型更改为
int
,以避免装箱 (这似乎是有道理的,因为getModifiedBy()
永远无法返回null
):