请考虑以下代码。当我分析声纳规则的代码时,它抱怨“ 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;
}
}
答案 0 :(得分:2)
您应将@NotNull
注释移至构造函数和setter参数:
public Dummy(@NotNull Integer dummyField) {
this.dummyField = dummyField;
}
public void setDummyField(@NotNull Integer dummyField) {
this.dummyField = dummyField;
}
如果您确认该值的所有可能的变异子都仅将其设置为非null值,则与声明该值本身必须为非null的效果相同-但应避免虚假的警告