Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java可选参数是否使@NonNull注释冗余?_Java - Fatal编程技术网

Java可选参数是否使@NonNull注释冗余?

Java可选参数是否使@NonNull注释冗余?,java,Java,我正在开发一个新的代码库,我想知道,既然我代码中的所有非可选参数在传递null时都会抛出一个IllegalArgumentException,那么使用@NonNull这样的注释有意义吗?还是期望程序员知道我总是使用Optional来表示此处不传递任何值是有效的操作更好?当然,假设我还说在javadoc等中,可以将null传递给需要可选参数的参数,这样您就可以认为@NonNull仍然有用 就我个人而言,我认为@NonNull会成为冗余,因为如果您调用一个需要可选值的方法,那么您将传递Optiona

我正在开发一个新的代码库,我想知道,既然我代码中的所有非可选参数在传递null时都会抛出一个IllegalArgumentException,那么使用@NonNull这样的注释有意义吗?还是期望程序员知道我总是使用Optional来表示此处不传递任何值是有效的操作更好?当然,假设我还说在javadoc等中,可以将null传递给需要可选参数的参数,这样您就可以认为@NonNull仍然有用

就我个人而言,我认为@NonNull会成为冗余,因为如果您调用一个需要可选值的方法,那么您将传递Optional.empty,并且在不存在该值时从不为null。请记住,java约定不允许使用可选的in参数


我不同意这个约定,因为可选已经传达了一个含义,即底层方法准备处理没有值的情况。

最终这是一个意见和偏好的问题,但我认为如果已经确定您的代码是空的,那么@NonNull是不必要的。Guava采用了这种方法,并使用@Nullable注释来表示偶尔出现的异常。

@NonNull可由IDE使用,而不是由您的异常使用。。