首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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

Stack Overflow用户

发布于 2021-11-02 15:26:20

如果你使用的是Spring5.x/ SpringBoot 2.x,你绝对应该使用Spring注解(org.springframework.lang),因为它们为你提供了一个默认的包范围的null检查和注解@NonNullFields@NonNullApi。您甚至不会与其他依赖项中的其他NotNull/NonNull注释发生冲突,因为您正在使用@NonNullFields/@NonNullApi。必须在名为package-info.java的文件中使用注释,该文件位于包的根目录下:

代码语言:javascript
运行
复制
@NonNullFields
@NonNullApi
package org.company.test;

要从null检查中排除某些字段、参数或返回值,只需显式使用@Nullable注释。除了使用@NonNullFields/@NonNullApi,您还可以在任何地方设置@NonNull,但在默认情况下,使用@NonNullFields/@NonNullApi激活null检查可能更好,并且只使用@Nullable执行特定的异常。

IDE (Intellij)将突出显示违反null条件的代码。如果设置正确,每个开发人员都可以假定字段、参数和返回值不能为空,除非有@Nullable注释。有关更多信息,请查看此article

票数 1
EN
查看全部 20 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4963300

复制
相关文章

相似问题

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