何时使用@NotNull和@Nullable IntelliJ注释?

时间:2018-10-03 15:32:08

标签: java intellij-idea annotations

我刚刚开始使用这些IntelliJ IDEA Java批注,但是我不知道何时应该使用它们,尤其是因为IDEA能够在大多数时候进行推断。

你们遵循某种规则吗?我不想看到每个参数或字段都用它们注释,代码可能会变得一团糟。
我了解这可以认为是基于意见的,但是我仍然想阅读答案。

3 个答案:

答案 0 :(得分:3)

在公共API上使用这些注释可能是最有用的,在IntelliJ IDEA不能自动推断出这些注释的地方。换句话说,要与其他开发人员进行交流。因此,公共接口中公共方法的参数和返回类型绝对是@Nullable / @NotNull批注的候选对象。

答案 1 :(得分:2)

  

@Nullable 注释可帮助您检测:

     

可以返回null的方法调用。变量(字段,局部变量,   和参数),可以是null

     

@NotNull 注释实际上是一个明确的合同   声明:

     

方法不应返回null变量(字段,局部变量,   和参数)不能包含null值。

例如,如果您创建一个方法,该方法的参数具有 @NotNull 批注,然后使用可能是null的参数调用此方法,则IntelliJ IDEA会即时指出问题所在。

使用@Nullable只是声明您的变量或方法可以包含null值。

答案 2 :(得分:2)

正如其他人所提到的,these annotations用于指示IDE某些东西(参数,属性等)可以(或不能)为null。这样可以帮助您检测可能不正确的代码。

这不是“必须遵循”的规则,而是另一个工具,可帮助开发人员在使用IDE时编写更健壮,更不易出错的代码

如果您独自编写代码,团队规模很小,您正在从事小型项目或任何类似的情况...如果没有它,您会感到很自在,那么请不要使用它,因为这确实使代码变得不知何故。这并不意味着这对以前的任何情况都没有用(实际上也很有用)。

另一方面,如果您认为您需要一个额外的工具来帮助您针对“非空”值检测可能失败的代码,或者例如,您正在编码要供第三方使用的API,使用此注释而不是代码块内的几个assert ...然后继续。

这完全是在项目中评估优点缺点,您可以在其中应用这些注释,并确定这是否比“问题”能给您带来更多的好处原因。