【问题标题】:JSR305 vs. JSR308 (Java Type Anotations) - Which is going to be the standard?JSR305 与 JSR 308(Java 类型注释)——哪个将成为标准?
【发布时间】:2010-12-01 09:31:09
【问题描述】:

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

JSR-305: Annotations for Software Defect Detection(additional resource)
JSR-308: Annotations on Java Types(additional resource)

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

你知道吗:

  • 两者中的哪一个将使用 Java SE 7 或 Java EE 6?
  • 每个 JSR 有多“稳定”?
  • 一个会取代(或淘汰)另一个吗?

【问题讨论】:

    标签: java java-7 jsr305


    【解决方案1】:

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

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

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

    【讨论】:

    • 所以,实际上 JSR-308 只是语言的扩展,而那些检查器(在项目页面上讨论)是可选的,在 JDK 中不可用),对吧?
    • 好像是这样。这两个提案一起工作,因为它们一起最有用(这就是 JSR-308 页面吹捧这种功能的原因)。我没有任何关于 JDK7 中会出现什么或不会出现什么的权威信息,但似乎 JSR-305 没有成功,但我很可能是错的。
    【解决方案2】:

    根据本文档,上次更新时间为 2010-09-19,JSR 308 是 “推迟到 JDK 8 或更高版本”: http://openjdk.java.net/projects/jdk7/features/

    【讨论】:

    • JSR 308 确实出现在 Java 8 中。
    【解决方案3】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多