考虑下面的代码。当我分析声纳规则的代码时,它抱怨“ 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相同,但应避免虚假警告