考虑下面的代码。当我分析声纳规则的代码时,它抱怨“ javax.validation.constraints.NotNull”,但未在此构造方法中初始化。

我可以通过使用默认值(see example here)初始化字段来解决此问题,但是它将使@NotNull注释多余。所以我的问题是如何以最佳方式解决此问题。

public class Dummy {

    @NotNull(message = "Dummy field cannot be null")
    private Integer dummyField;

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

    public Integer getDummyField() {
        return dummyField;
    }

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

最佳答案

您应该将@NotNull注释移至构造函数和setter参数:

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


如果您验证该值的所有可能的变种器仅将其设置为非null值,则效果与声明该值本身必须为非null相同,但应避免虚假警告

07-26 09:33