有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    嗯,modifiedBy是一个Integer,但是三元条件表达式modifiedBy == null ? 0 : modifiedBy的类型是int(这是当第二个操作数是int,第三个操作数是Integeras you can see in table 15.25-C. of the JLS时的条件表达式类型)

    因此modifiedBy被解绑到int以评估该表达

    然后再次将其装箱到Integer,因为这是getModifiedBy()方法的返回类型

    您可以将该方法的返回类型更改为int,以避免装箱 (这似乎是有道理的,因为getModifiedBy()永远无法返回null):

    public int getModifiedBy() {
        return modifiedBy == null ? 0 : modifiedBy;
    }