java - @NotNull 原语约束,为什么?

标签 java constraints notnull

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

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

在我的代码中,我忘记了设置值,但它仍然“有效”,因为 boolean 值的默认值为 false。我现在将其更改为 Boolean,以便在未主动设置时验证失败。

为什么我可以对显然不能为 null 的事物使用 @NotNull 约束?是不是重构的原因,所以如果我像现在一样更改为 boolean 值,我仍然保留预期的约束?

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

最佳答案

As javadoc says The annotated element must not be null. Accepts any type.

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

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

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

关于java - @NotNull 原语约束,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40172563/

相关文章:

python - 生成带有约束的大量(可能 30)的排列

SQL Server 2005 如何创建唯一约束?

scala - 标记方法调用它总是返回非空结果

Java - 在对象列表和哈希表之间建立关系?

java - 使用 java thumbnailator 或 imgscalr 调整 jpeg 图像大小时出现粉红色/红色调

java - Android, Native 开发包 : No implementation found for native Lcom/example/hellojni/Mainactivity;. sayHelloWorld ()Ljava/lang/String;

iOS View 定位取决于使用约束的屏幕尺寸

oracle - 插入空值时插入默认值

java - 了解Options.orElse

java - 进行单元测试时无法将Value 设置为 MutableLiveData - 抛出 java.lang.reflect.InvocableTargetException