在方法参数中使用NotNull注释
我刚刚开始在@NotNull
Java 8中使用注释,并得到了一些意外的结果。
我有这样的方法:
public List<Found> findStuff(@NotNull List<Searching> searchingList) { ... code here ...
}
我编写了一个JUnit测试,为参数searchList传递了空值。我原以为会发生某种类型的错误,但好像没有注释就通过了。这是预期的行为吗?据我了解,这是允许您跳过编写样板空检查代码。
对于@NotNull应该做什么的解释将不胜感激。
回答:
该@Nullable
注释提醒您在以下情况下必须进行NPE检查:
- 可以返回null的调用方法。
- 取消引用可以为空的变量(字段,局部变量,参数)。
该@NotNull
注释是,实际上,在声明下面的一个明确的合同:
- 方法不应返回null。
- 变量(如字段,局部变量和参数)
不能不宜 持有空值。
例如,代替编写:
/** * @param aX should not be null
*/
public void setX(final Object aX ) {
// some code
}
您可以使用:
public void setX(@NotNull final Object aX ) { // some code
}
另外,@NotNull
通常由ConstraintValidators检查(例如,在春季和冬眠期间)。
@NotNull
由于注释定义不提供任何ConstraintValidator
类型引用,因此注释本身不会进行任何验证。
有关更多信息,请参见:
- Bean验证
- NotNull.java
- Constraint.java
- ConstraintValidator.java
以上是 在方法参数中使用NotNull注释 的全部内容, 来源链接: utcz.com/qa/436387.html