原语的@NotNull约束,为什么?

时间:2016-10-21 09:08:00

标签: java constraints notnull

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

@Column(name = "ACTIVE")
@NotNull
private boolean active;

在我的代码中,我忘了设置值,但它仍然“工作”#34;因为boolean的默认值为false。我现在已经将其更改为Boolean,因此如果没有主动设置,它将无法通过验证。

为什么我允许@NotNull限制显然不是null的内容?是重构的原因,所以如果我现在改变为布尔值,我仍然保持预期的约束?

有没有好的想法可以解决这些问题(除了这个目的的更多测试)?或者我应该远离使用原语?

1 个答案:

答案 0 :(得分:2)

  

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

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

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

@Target(value={METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER})