JSR305与JSR308(Java类型Anotations) – 哪个将成为标准?

似乎有两种不同的JSR用于注释。

JSR-305:软件缺陷检测注释 (附加资源)
JSR-308:Java类型的注释 (附加资源)

两者似乎都面向静态代码分析。

你知道吗:

  • 哪两个都将在Java SE 7或Java EE 6中?
  • 每个JSR的“稳定”程度如何?
  • 那个人会取代(或淘汰)另一个吗?

我可以回答你的最后一个问题。 它们不是同一件事。 305是关于您可以放置​​它们的新注释,这有助于通过合同系统提供对设计的编程可见性。 因此,如果某个方法不应返回null,或者某个方法应该永远不会收到空参数,则可以告诉系统分析注释以在这段代码中查找这个特定情况。

308是关于能够注释更多事物,例如通用参数和类型转换。 我想这是一个主要的用途是能够抑制特定类型转换的警告,而不必为此目的声明一个局部变量。 @SuppressWarnings注释已经存在(而JSR-305希望定义新注释),但在JSR-308中它可以应用于更多情况。

根据这一点, 308将成为Java7的一部分,这意味着它很稳定。 JSR-305不在列表中,因此它看起来不像Java7。

根据此文档,最新更新于2010-09-19,JSR 308“推迟到JDK 8或更高版本”: http : //openjdk.java.net/projects/jdk7/features/

对于未来的读者来说,JSR 308正在被集成到Java 7中。它的一些变化已经被推向了Java 7的公共测试版.JSR305然而没有成功。