19

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

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

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

你知道吗:

  • 两者中的哪一个将在 Java SE 7 或 Java EE 6 中使用?
  • 每个 JSR 有多“稳定”?
  • 一个取代(或过时)另一个?
4

3 回答 3

16

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

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

根据这个308 将成为 Java7 的一部分,这意味着它非常适合稳定。JSR-305 不在列表中,因此看起来它不会进入 Java7。

于 2009-09-25T13:25:18.540 回答
12

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

于 2010-12-05T04:37:17.437 回答
1

对于未来的读者,JSR 308 正在被集成到 Java 7 中。它的一些更改已经推送到 Java 7 的公共测试版中。但是 JSR305 没有成功。

于 2009-11-18T15:25:47.607 回答