Lombok 的 @NonNull 或 javax @Nonnull

adi*_*moh 1 java null annotations non-nullable lombok

龙目岛的@NonNull VS javax.annotation.Nonnull

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

这里的答案模糊地比较了所有注释,但没有推断出哪一个最好。我只是想知道两者中哪个更好。

Ari*_*tex 5

一个简单的谷歌搜索来查找文档会产生两者之间非常明显的区别。

javax.annotation.Nonnull是 JSR-305 的一部分,它似乎已经死了。即使情况并非如此,所述注释也仅用于静态代码分析目的,例如,您的 IDE 警告您正在某个不可接受的地方传递空值。

lombok.NonNull是一个非常不同的故事。首先,所述注释不用于验证目的或静态代码分析目的。Lombok 使用此注释在实例变量或参数不应该为空时触发 NPE。

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

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

似乎您对javax.annotation相关功能和 Lombok 的功能的熟悉程度都不是最好的,因此我建议您仔细阅读什么是什么。