JSR305 vs. JSR308 (Java Type Anotations) - 哪个会成为标准?

2022-09-02 12:50:41

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

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

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

你知道吗:

  • 两者中哪一个将在Java SE 7或Java EE 6中出现?
  • 每个JSR的“稳定性”如何?
  • 一个是否取代(或过时)另一个?

答案 1

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

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

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


答案 2

根据本文档(最后更新于 2010 年 9 月 19 日),JSR 308 是“延期到 JDK 8 或更高版本”:http://openjdk.java.net/projects/jdk7/features/


推荐