gpt4 book ai didi

java - 在方法参数中使用 NotNull 注解

转载 作者:IT老高 更新时间:2023-10-28 11:26:46 45 4
gpt4 key购买 nike

我刚开始在 Java 8 中使用 @NotNull 注释并得到一些意想不到的结果。

我有这样的方法:

public List<Found> findStuff(@NotNull List<Searching> searchingList) {
... code here ...
}

我编写了一个 JUnit 测试,为参数 searchList 传递了空值。我期待会发生某种类型的错误,但它就像注释不存在一样。这是预期的行为吗?据我了解,这是为了让您跳过编写样板空检查代码。

非常感谢您解释 @NotNull 究竟应该做什么。

最佳答案

@Nullable@NotNull 自己什么都不做。它们应该充当文档工具。

@Nullable 注解提醒您在以下情况下引入 NPE 检查的必要性:

  1. 调用可以返回 null 的方法。
  2. 取消引用可以为 null 的变量(字段、局部变量、参数)。

@NotNull 注解实际上是一个明确的契约,声明如下:

  1. 方法不应返回 null。
  2. 变量(如字段、局部变量和参数)不能 不应保持空值。

例如,不要写:

/**
* @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 检查。 (例如在 Spring 和 hibernate 中)。

@NotNull 注释本身不进行任何验证,因为 annotation definition不提供任何 ConstraintValidator 类型引用。

更多信息见:

  1. Bean validation
  2. NotNull.java
  3. Constraint.java
  4. ConstraintValidator.java

关于java - 在方法参数中使用 NotNull 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34094039/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com