Java的。我应该使用哪个@Nullable来标记返回值?

时间:2017-07-25 09:20:06

标签: java java-8 sonarqube

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

我使用com.sun.istack.internal.Nullable,但声纳说来自" sun。*"不应该使用包裹。代号闻到主要鱿鱼:S1191

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

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

4 个答案:

答案 0 :(得分:4)

好吧,我想对于Sonar你可以使用edu.umd.cs.findbugs.annotations。*,这些已被弃用并建议你使用javax.annotation.Nullable。

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

来自java-doc的

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

答案 3 :(得分:0)

对于FIndbug / Spotbug,请使用@CheckForNull。参见https://sourceforge.net/p/findbugs/bugs/1181