我正在研究一个新的代码库,我想知道,因为我的代码中的所有非可选参数在传递 null 时都会抛出 IllegalArgumentException,使用像 @NonNull 这样的注释是否有意义?还是期望程序员知道我总是使用 Optional 来指示不传入任何值是此处的有效操作更好?(当然,假设我也在javadoc等中这么说)
您可以将null
传递给需要Optional
的参数,这样您就可以争辩说@NonNull
仍然有用。
我个人认为@NonNull
变得多余,因为如果您调用一个期望Optional
的方法,您将传递Optional.empty()
并且当值不存在时永远不会null
。请记住,Java 约定禁止在参数中使用Optional
。
我不同意这个约定,Optional
因为它已经传达了底层方法准备处理值缺失的含义。
最终,这是一个意见和偏好的问题,但我认为如果你的代码是空敌对的,我认为@NonNull
没有必要。Guava采用了这种方法,并使用@Nullable
注释来指示偶尔的异常。