首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该使用哪个@NotNull Java注解?

我应该使用哪个@NotNull Java注解?
EN

Stack Overflow用户
提问于 2011-02-11 06:05:35
回答 20查看 338.7K关注 0票数 1.2K

我希望让我的代码更具可读性,并使用集成开发环境代码检查和/或静态代码分析(FindBugs和Sonar)等工具来避免NullPointerExceptions。许多工具似乎与彼此的@NotNull/@NonNull/@Nonnull注释不兼容,在我的代码中列出所有这些工具很难读懂。对哪一个是“最好的”有什么建议吗?下面是我找到的等价注解列表:

  • javax.validation.constraints.NotNull

为运行时验证而创建,而不是静态分析。

documentation

  • edu.umd.cs.findbugs.annotations.NonNull

由 ()及其后续的静态分析使用,因此声纳(现在是)

SpotBugs documentationFindBugs documentation

  • javax.annotation.Nonnull

这可能也适用于FindBugs,但处于非活动状态。(另请参阅:) source

  • org.jetbrains.annotations.NotNull

由IntelliJ IDEA集成开发环境用于静态分析。

documentation

  • lombok.NonNull

用于控制中的代码生成。

占位符注释,因为没有标准。

documentationsource

  • androidx.annotation.NonNull

Android中提供的标记注释,由注释包提供

documentation

  • org.eclipse.jdt.annotation.NonNull

由Eclipse用于静态代码分析

documentation

EN

回答 20

Stack Overflow用户

发布于 2011-02-11 06:09:00

我使用NPE one,因为我最关心的是可能产生IntelliJ的IntelliJ标记。我同意在JDK中没有标准注释是令人沮丧的。有传言说要添加它,它可能会进入Java7。在这种情况下,将会有更多的选择!

票数 59
EN

Stack Overflow用户

发布于 2011-02-11 06:21:51

根据Java 7 features list,JSR-308类型批注被推迟到Java8,甚至没有提到。

在最新的JSR-308草案的appendix中有一些关于JSR-305的状态的信息。这包括观察到JSR-305注释似乎被抛弃了。JSR-305页面也将其显示为“非活动”。

同时,实用的答案是使用最广泛使用的工具支持的注释类型...并准备好在情况发生变化时改变它们。

事实上,JSR-308没有定义任何注释类型/类,看起来他们认为它超出了范围。(考虑到JSR-305的存在,他们是对的)。

然而,如果JSR-308看起来真的会进入Java 8,那么如果人们对JSR-305重新产生兴趣,我也不会感到惊讶。AFAIK,JSR-305团队还没有正式放弃他们的工作。他们已经安静了2+几年了。

有趣的是,Bill Pugh (JSR-305的技术负责人)是FindBugs的幕后黑手之一。

票数 33
EN

Stack Overflow用户

发布于 2014-04-25 22:15:54

如果有人只是在寻找IntelliJ类:您可以使用以下命令从maven存储库获取它们:

代码语言:javascript
复制
<dependency>
    <groupId>org.jetbrains</groupId>
    <artifactId>annotations</artifactId>
    <version>15.0</version>
</dependency> 
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4963300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档