有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我刚开始使用那些IntellijIDEA Java注释,但我不明白什么时候应该使用它们,特别是因为IDEA在大多数情况下都能够推断它们

你们遵守什么规则吗?我不希望看到每个参数或字段都用它们注释,代码可能会变得一团糟

我知道这可以被认为是基于观点的,但我还是想看看答案


共 (3) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    The @Nullable annotation helps you detect:

    Method calls that can return null. Variables (fields, local variables, and parameters), that can be null.

    The @NotNull annotation is, actually, an explicit contract declaring that:

    A method should not return null Variables (fields, local variables, and parameters) cannot hold a null value.

    例如,如果您创建一个方法,其中一个参数具有@NotNull注释,然后使用一个可能是null的参数调用此方法,IntelliJ IDEA将动态地突出显示问题

    使用@Nullable仅声明变量或方法可以保存null

  3. # 3 楼答案

    ^{} and ^{}注释用于指示IDE某些内容(参数、属性等)可以(或不能)是null。这样可以帮助您检测可能不正确的代码

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

    如果你是独自编码,团队规模很小,你在一个小项目或任何类似的情况下工作。。。如果没有它,您会感觉很舒服,然后不要使用它,因为代码确实会变得有些冗长。这并不意味着这对之前的任何情况都没有用处(实际上也可能非常有用)

    另一方面,如果您认为需要一个额外的工具来帮助您根据不可为“null”的值检测可能失败的代码,或者,例如,您正在编写一个API供第三方使用,并且希望使用此注释而不是代码块中的几个assert。。。那就去做吧

    这一切都是关于在项目中评估优点缺点,您可以在项目中应用这些注释,并决定这是否会给您带来比它可能导致的“问题”更多的好处