我看到了问题JSR305 vs. JSR308 (Java Type Anotations) - Which is going to be the standard?,我理解JSR 308和JSR 305之间的区别。
我也明白,在这个时候,308是针对Java 7的,而305则不是,我很好奇305的整体状态。
具体来说,我在某些项目中使用了Google Collections和JSR-305(与one of the Guice best practices advocates类似的方式)并且想知道是否还有更多“未来方向” - 我应该使用友好的方法。我打算在JSR-305小组上询问这个问题,但该小组没有太多活动,我只是想知道这里是否有人有更多的信息。
答案 0 :(得分:62)
如此answer中所述,JSR-305提出了新的注释,例如@NonNull,而JSR-308建议允许在新地方进行注释,例如通用声明。
引用JSR 308页面:
...本文档未提出任何注释,仅指定它们在Java代码中的显示位置。
JSR 308(新地方的注释)包含在java 8下的JEP 104中。
截至2017年,JSR 305(新注释)继续具有“休眠”的官方身份。自2010年以来,关于它在谷歌群组中的状态的question未得到回复。
JSR-305注释here的参考实现被许多项目使用,包括番石榴。使用maven,您可以使用JSR-305参考实现,将其添加到您的pom,
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.0</version>
</dependency>
答案 1 :(得分:18)
JSR 305不会成为Java 8的一部分:
答案 2 :(得分:9)
JSR 337描述了Java 8:规范已达到最终状态:see here。
答案 3 :(得分:4)
如果您担心可空性注释,那么我建议使用来自 edu.umd.cs.findbugs.annotations
命名空间的 SpotBugs 项目提供的注释。如今,大多数 linter 或 IDE 都应该支持它。它不如 JSR 305 中提议的 javax.annotation
好,但请记住,JSR 305 从未被批准,实际上,JSR 305 提议中从未附加过任何带有类的 jar
文件。
关于此的一些更有趣的文章:
JSR 305 与 JSR 308
JSR 305 和 JSR 308 之间几乎没有任何关系。JSR 308 是关于将注释应用于泛型(java 类型参数)的能力。 JSR 308 已合并为 Java SE 8 的一部分。
唯一的链接是两个 JSR 都与两个不同的项目(FindBugs 和 Checker Framework)相关,这两个项目涉及 null 安全性和 nullability 注释主题。
根据内容,JSR 没有任何关联。
答案 4 :(得分:1)
根据Alex Millers Java 7 blog的说法,JSR-308(和305)计划进入Java 7.也许他会出现在这里,并为您提供更多信息。