对象标记为" javax.validation.constraints.NotNull"但未在此构造函数中初始化

时间:2018-01-20 01:52:48

标签: java

我有以下对象

import javax.validation.Valid;
import javax.validation.constraints.NotNull;

public class SomeObject {
    @Valid
    @NotNull
    private int someCount;

    public int getSomeCount() {
        return someCount;
    }

    public void setSomeCount(final int someCount) {
        this.someCount = someCount;
    }

    public SomeObject(final int someCount) {
        this.someCount = someCount;
    }
}

但是我得到了

  

" someCount"被标记为" javax.validation.constraints.NotNull"但是   未在此构造函数中初始化。

并且它指向构造函数。我将一个项目传递给构造函数。我该如何解决这个

2 个答案:

答案 0 :(得分:2)

这里有一个原始类型int。它不能为空。相反,我会建议您使用@Min(0)验证器。如果您确实需要将null作为值传入,则使用包装器Integer代替。为此,您可以如上所述进行空检查。我不推荐这种方法。

答案 1 :(得分:0)

“ javax.validation.constraints.NotNull”,但未在此构造方法中初始化

我们最近在声纳构建中遇到了这个问题。

为解决此问题,我们在减速时初始化了非null字段。

请考虑以下代码。

public class Dummy {

    @NotNull(message = "Dummy field cannot be null")
    private Integer dummyField = -1; // Any default value


    public Dummy(Integer dummyField) {
        this.dummyField = dummyField;
    }

    public Integer getDummyField() {
        return dummyField;
    }

    public void setDummyField(Integer dummyField) {
        this.dummyField = dummyField;
    }


}