【问题标题】:Java. Which @Nullable should I use to mark return value with one?爪哇。我应该使用哪个@Nullable 来标记返回值?
【发布时间】:2017-12-31 03:01:22
【问题描述】:

我的 java 方法可以返回 null 和非空结果。我想用 @Nullable 注释标记方法,使其更具可读性。

我使用了com.sun.istack.internal.Nullable,但声纳说不应使用“sun.*”包中的类。代码气味大鱿鱼:S1191.

我试图找到更多类似的注解,但有来自不同 IDE 的变体,而不是来自 java 供应商。

java (oracle) 是否为可空注释提供替代方案,或者我应该只使用第三方库?如果我必须使用第三方库来拥有@Nullable,哪个应该好?

【问题讨论】:

标签: java java-8 sonarqube


【解决方案1】:

好吧,我认为对于 Sonar,您可以使用 edu.umd.cs.findbugs.annotations.*,它已被弃用并建议您使用 javax.annotation.Nullable。

我主要使用 Jetbrains 的 https://www.jetbrains.com/help/idea/nullable-and-notnull-annotations.html,但我的主要目标是在 IntelliJ 中进行分析。

【讨论】:

    【解决方案2】:

    为了使其更具可读性,请考虑使用Optional<T> 作为返回类型,使用它您可以使用类型系统表达可选性并受益于丰富的类似单子的 API。

    【讨论】:

      【解决方案3】:

      Optional<T>@Nullable@return 来自 java-doc 的标签是向 API 用户说方法可以返回 null 的方式。但是你在cmets中提到你的方法是private。这意味着除了你之外,没有人可以使用它。这就是为什么不需要额外的东西。

      【讨论】:

        【解决方案4】:

        对于 FIndbugs/Spotbugs,使用 @CheckForNull。见https://sourceforge.net/p/findbugs/bugs/1181)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-09-27
          • 1970-01-01
          • 2013-08-31
          • 2016-11-08
          • 1970-01-01
          • 1970-01-01
          • 2012-11-19
          相关资源
          最近更新 更多