java - Lombok 的 @NonNull 或 javax @Nonnull

标签 java null annotations lombok non-nullable

Lombok's @NonNull VS javax.annotation.Nonnull

哪个更适合用于方法参数以及何时使用?

The answer here模糊地比较了所有注释,但无法推断出哪一个是最好的。我只是想知道两者中哪个更好。

最佳答案

一个简单的谷歌搜索来查找文档会产生两者之间非常明显的区别。
javax.annotation.Nonnull是 JSR-305 的一部分,它似乎已经死了。即使情况并非如此,注释也只能用于静态代码分析目的,例如您的 IDE 警告您,您正在某个 Not Acceptable 地方传递空值。
lombok.NonNull是一个非常不同的故事。首先,所述注释不用于验证目的或静态代码分析目的。 Lombok 使用此注释在实例变量或参数不应该为空时触发 NPE。

Lombok 作为注解后处理器将在预编译过程中有效地获取此注解,并将自动生成所需的代码以有效处理这些情况(通过操作 AST)。

您可以在此处阅读更多信息:Lombok - NonNull .

看来你对javax.annotation都很熟悉相关的功能和 Lombok 的功能并不是最好的,所以我建议好好阅读一下什么是什么。

关于java - Lombok 的 @NonNull 或 javax @Nonnull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54537853/

相关文章:

java - 正则表达式-没有特定字符串的前缀和后缀

java - 将 xml 文档中出现的特殊字符(如 – 和 —)替换为相应的代码(如 等)

c# - 如何处理 null 或可选的 DLL 结构参数

javascript - (facebook) flow - 类型注解是如何工作的

java - 无法解析符号 'Immutable'

java - Android/Java 最佳最新映射器

java - ehcache3 - 为什么缓存不会过期?

具有不确定状态的 Android CheckBox?

c# - ??运算符未触发 DataTable DataRow 中的 System.DBNull 类型

java - 反射找不到注解