基元的 @NotNull 约束,为什么?

Vik*_*ren 8 java constraints notnull

刚刚遇到一个错误,问题是我遇到的:

@Column(name = "ACTIVE")
@NotNull
private boolean active;
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我忘记设置该值,但它仍然“有效”,因为布尔值的默认值是 false。我现在已将其更改为Boolean,如果未主动设置,则验证失败。

为什么我可以对@NotNull显然不能的事情施加限制null?这是重构的原因,所以如果我像现在所做的那样更改为布尔值,我仍然保留预期的约束吗?

是否有任何好的想法可以解决这些问题(除了为此目的进行更多测试)?或者我应该避免使用基元?

Pra*_*mar 4

正如javadoc所说,带注释的元素不能为空。接受任何类型。

它可以是任何类型,它只是检查变量是否not null是,与是否接受无关null

如前所述,它适用于METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER.

@Target(value={METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER})
Run Code Online (Sandbox Code Playgroud)