JSR 305的状态是什么?

Cha*_*ins 98 java jsr305

我已经看到了JSR305与JSR308(Java Type Anotations)的问题 - 这将成为标准吗?我理解JSR 308JSR 305之间的区别.

我也明白,在这个时候,308是针对Java 7,305不是,我很好奇305的整体状态.

具体来说,我在我的一些项目中使用Google CollectionsJSR-305(与Guice最佳实践倡导者的方式类似)并且想知道是否有更多"未来方向" - 我应该使用的友好方法代替.我打算在JSR-305小组上询问这个问题,但该小组没有太多活动,我只是想知道这里是否有人有更多信息.

sbr*_*ges 67

如本回答所述,JSR-305提出了新的注释,例如@NonNull,而JSR-308建议允许在新的地方注释,例如泛型声明.

引用JSR 308页面:

...本文档未提出任何注释,仅指定它们在Java代码中的显示位置.

JSR 308(新地方的注释)包含在JEP 104下的Java 8中.

截至2017年,JSR 305(新注释)继续具有"休眠"的官方地位.一个问题,它是自2010年谷歌的组中的地位一直无人接听.

还有就是JSR-305注释的参考实现这里所使用的许多项目,包括番石榴.使用maven,你可以通过将它添加到你的pom来使用JSR-305参考实现,

<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>jsr305</artifactId>
    <version>3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • 链接到[com.google.code.findbugs:maven central上的jsr305](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.google.code.findbugs%22%20AND% 20a%3A%22jsr305%22)(最新版本现为3.0.0) (2认同)
  • Java 9功能齐全但未发布,看起来好像没有包含JSR-305.是否有另外一个JSR添加了类似的注释? (2认同)

Wil*_*ler 18

JSR 305不会成为Java 8的一部分:


man*_*cze 12

如果您担心可空性注释,那么我建议使用 SpotBugs 项目从edu.umd.cs.findbugs.annotations命名空间提供的注释。如今,大多数 linter 或 IDE 都应该支持它。它不像javax.annotationJSR 305 中提议的那么好,但请记住 JSR 305 从未获得批准,并且实际上jarJSR 305 提案中从未附加过任何包含类的文件。

关于此的一些更有趣的文章:

JSR 305 与 JSR 308

JSR 305 和 JSR 308 之间几乎没有任何关系。JSR 308 是关于将注释应用于泛型(java 类型参数)的能力。JSR 308 已合并为 Java SE 8 的一部分。

唯一的联系是,这两个 JSR 都与两个不同的项目(FindBugs 和Checker Framework )相关,这两个项目都涉及空安全性和可空性注释主题。

从内容来看,JSR 没有任何关系。


Gle*_*est 9

JSR 337描述了Java 8:规范已达到最终状态:请参见此处.

  • JSR 308绝对是
  • JSR 305绝对是出局