【发布时间】:2016-06-23 20:32:09
【问题描述】:
什么是最佳“NonNull”注释?
“最佳”
- 标准方式,例如面向未来(例如,标准 jdk 等的支持)
- 支持 IDE(显示在 java doc 中以指示开发人员的用法)
- findbugs 等静态分析工具的支持
- 支持运行时分析
这是当前世界的样子 - 任何进一步的见解都值得赞赏:
javax.validation.constraints.NotNull(Docs)
+ javax 包因此看起来是面向未来的
- JEE 不是 JSE 的一部分。在 JSE 中需要import additional libs.
- 不受静态分析工具支持(仅限运行时验证)(docs)edu.umd.cs.findbugs.annotations.NonNull
- 外部库而不是javax包
- deprecated 自 findbugs 版本 3.X
+ 用于静态分析(通过 findbugs 和 Sonar)(docs)javax.annotation.Nonnull
+ 用于静态分析(在 findbugs 中)
- JSR-305 处于休眠/死机/未知状态,如 fb mailing list 所示。作者Bill Pugh,即使被直接问到,也好多年没有评论这个州了……(docs,有趣的presentation)org.eclipse.jdt.annotation_2.0.0
+ 用于静态分析(虽然在 Eclipse 中而不是在 findbugs 中)
- Eclipse 专有(没有尝试单独使用它们)(docs)org.jetbrains.annotations.NotNull
+ 用于静态分析(在 intelliJ 中而不是在 findbugs 中)
- IntelliJ 专有(但也可作为 jar 公开获得)lombok.NonNull(docs)
+ 用于控制代码生成
- 专有注释android.support.annotation.NonNull(docs)
+ android studio 中的静态分析
- android 特定的专有注解org.checkerframework.checker.nullness.qual.NonNull(docs)
+ JSR308 实现,它是 Java8 的一部分(它确实引入了在代码的不同部分编写注释的能力,但没有引入新的注释)
+ 用于静态代码(虽然不是 findbug)和运行时分析
- 然而,外部库似乎是 java 人的 endorsed
目前我倾向于Checker Framework,但我期待其他观点......
[免责声明] 我知道问题已在此处提出但未得到解答(或答案错误/不完整/过时) [/免责声明]
【问题讨论】:
-
如果您“投票结束”评论您的理由,我将不胜感激。我花时间写了这个问题,如果你也花一些时间,我将不胜感激!
-
非常相似的问题在这里:stackoverflow.com/q/4963300/873282
-
被提名重新开放,因为提问者客观地定义了“最佳”。
-
@Lonzak 您应该改进原始问题,而不是复制它。现在有人在寻找答案或想要(改进)答案不知道在哪里这样做,哪个问题是权威/最好的,并且必须做额外的工作。这不好,这就是为什么我要求版主合并两个问题。
标签: java eclipse intellij-idea nullpointerexception annotations