Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/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方法是空安全的,有些不是,我怎么知道?_Java - Fatal编程技术网

有些java方法是空安全的,有些不是,我怎么知道?

有些java方法是空安全的,有些不是,我怎么知道?,java,Java,有些java方法是空安全的,但有些不是。如何区分它们?我想你指的是参数?文档应该说明参数是否可以为null,以及当它们可以为null时,从null推断出什么语义 不幸的是,并不是所有的文档都像这样清晰-同样地,它可能不会指定返回值是否为null。。。在这种情况下,您所能做的就是尽可能地进行实验或查看源代码:我想您的意思是在参数方面?文档应该说明参数是否可以为null,以及当它们可以为null时,从null推断出什么语义 不幸的是,并不是所有的文档都像这样清晰-同样地,它可能不会指定返回值是否为n

有些java方法是空安全的,但有些不是。如何区分它们?

我想你指的是参数?文档应该说明参数是否可以为null,以及当它们可以为null时,从null推断出什么语义


不幸的是,并不是所有的文档都像这样清晰-同样地,它可能不会指定返回值是否为null。。。在这种情况下,您所能做的就是尽可能地进行实验或查看源代码:

我想您的意思是在参数方面?文档应该说明参数是否可以为null,以及当它们可以为null时,从null推断出什么语义


不幸的是,并不是所有的文档都像这样清晰-同样地,它可能不会指定返回值是否为null。。。在这种情况下,您所能做的就是在可能的情况下进行实验或查看源代码:

如果幸运的话,参数将被记录或注释,或者两者兼而有之。不幸的是,大多数javaapi都缺少这两个方面

一些静态分析工具可以使用注释来检查是否不适当地传递空值。例如,该工具包括对以下注释的支持:

@NonNull-该值不能为null @CheckForNull-该值可能包含null。 @Nullable-值是否包含null取决于上下文。
如果幸运的话,参数将被记录或注释,或者两者兼而有之。不幸的是,大多数javaapi都缺少这两个方面

一些静态分析工具可以使用注释来检查是否不适当地传递空值。例如,该工具包括对以下注释的支持:

@NonNull-该值不能为null @CheckForNull-该值可能包含null。 @Nullable-值是否包含null取决于上下文。
一般来说,我建议您假设不能将null作为参数传递,除非文档明确说明可以传递null以及相应的行为是什么

采用参数可能是空安全的默认假设的一个问题是,即使结果是真的,如果没有文档记录,也不总是清楚相应的行为实际上是什么。不抛出异常实际上并不表明接下来会发生什么替代行为/默认参数/假设


如果您正在设计一个API,那么where is's practical,我建议您实际上不要鼓励将null作为参数传递给公开的方法/构造函数,而是使用包含或不包含各种可选参数的单独方法签名。在任何情况下,您可能需要以某种方式记录为弥补缺少的参数而采取的实际行为。

一般来说,我建议您假设您不能将null作为参数传递,除非文档明确说明您可以以及相应的行为是什么

采用参数可能是空安全的默认假设的一个问题是,即使结果是真的,如果没有文档记录,也不总是清楚相应的行为实际上是什么。不抛出异常实际上并不表明接下来会发生什么替代行为/默认参数/假设


如果您正在设计一个API,那么where is's practical,我建议您实际上不要鼓励将null作为参数传递给公开的方法/构造函数,而是使用包含或不包含各种可选参数的单独方法签名。在任何情况下,您可能需要以某种方式记录为弥补缺少的参数而采取的实际行为。

阅读您试图调用的方法的Javadoc。如果javadocs没有指定这一点,那么单元测试中的反复试验可能是最好的选择。

阅读您试图调用的方法的javadocs。如果javadocs没有指定这一点,那么单元测试中的试错可能是您的最佳选择。

null safe-您指的是可以返回null而不会给调用方造成问题的方法?不,它们可能意味着参数可以为null,而方法不会引发异常。我认为这是一个足够合理的问题。所谓空安全-你是指可以返回空值而不会给调用方造成问题的方法吗?不,它们可能意味着参数可以为空,而方法不会引发异常。我认为这是一个足够合理的问题。。。IntelliJ IDEA具有@NotNull/@null可实时检查和警告可能的违规行为。节省大量时间:+1。。。IntelliJ IDEA具有@NotNull/@null可实时检查和警告可能的违规行为。节省大量时间: