Java 可选参数是否使@NonNull注解变得多余?



我正在研究一个新的代码库,我想知道,因为我的代码中的所有非可选参数在传递 null 时都会抛出 IllegalArgumentException,使用像 @NonNull 这样的注释是否有意义?还是期望程序员知道我总是使用 Optional 来指示不传入任何值是此处的有效操作更好?(当然,假设我也在javadoc等中这么说)

您可以将null传递给需要Optional的参数,这样您就可以争辩说@NonNull仍然有用。

我个人认为@NonNull变得多余,因为如果您调用一个期望Optional的方法,您将传递Optional.empty()并且当值不存在时永远不会null。请记住,Java 约定禁止在参数中使用Optional

我不同意这个约定,Optional因为它已经传达了底层方法准备处理值缺失的含义。

最终,这是一个意见和偏好的问题,但我认为如果你的代码是空敌对的,我认为@NonNull没有必要。Guava采用了这种方法,并使用@Nullable注释来指示偶尔的异常。

最新更新