107

JSR305 vs. JSR308 (Java Type Annotations) - どちらが標準になるのかという質問を見てきました。JSR 308JSR 305の違いを理解しています。

また、現時点で 308 は Java 7 向けに予定されており、305 は予定されていないことも理解しており、305 の全体的なステータスに興味があります。

具体的には、私はいくつかのプロジェクトでGoogle CollectionsJSR-305を使用しており ( Guice のベスト プラクティスの 1 つが提唱しているものと同様の方法で)、より「将来の方向性」に適した方法を使用する必要があるかどうか疑問に思っていました。代わりは。これについては JSR-305 グループでも質問する予定ですが、そのグループはあまり活動がなく、ここに誰か詳しい情報があるかどうか疑問に思っていました。

4

5 に答える 5

77

この回答で説明されているように、JSR-305は@NonNullなどの新しいアノテーションを提案し、JSR-308はジェネリック宣言などの新しい場所でアノテーションを許可することを提案しています。

JSR 308ページを引用:

…このドキュメントではアノテーションを提案していません。アノテーションが Java コードのどこに表示されるかを指定しているだけです。

JSR 308 (新しい場所の注釈) は、JEP 104の下でJava 8に含まれています。

2017 年現在、JSR 305 (新しいアノテーション) は引き続き「休眠中」の正式なステータスを保持しています。Google グループでのステータスに関する質問は、2010 年以降回答がありません。

ここには、guava を含む多くのプロジェクトで使用されている JSR-305 アノテーションのリファレンス実装があります。Maven では、これを pom に追加することで JSR-305 参照実装を使用できます。

<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>jsr305</artifactId>
    <version>3.0.0</version>
</dependency>
于 2014-03-06T04:52:49.113 に答える
20

JSR 305 は Java 8 の一部ではありません。

于 2014-03-06T05:06:07.390 に答える
6

nullability アノテーションが気になる場合は、edu.umd.cs.findbugs.annotations名前空間の SpotBugs プロジェクトによって提供されるものを使用することをお勧めします。最近では、ほとんどのリンターまたは IDE でサポートされているはずです。JSR 305 で提案されたほど素晴らしいものではありませんjavax.annotationが、JSR 305 が承認されたことはなく、実際にjarクラスを含むファイルが JSR 305 提案に添付されたことがないことを思い出してください。

これに関するいくつかの興味深い記事:

JSR 305 対 JSR 308

JSR 305 と JSR 308 の間にはほとんど関係がありません。JSR 308 は、アノテーションをジェネリック (Java 型引数) に適用する機能に関するものです。JSR 308 は Java SE 8 の一部として組み込まれています。

唯一のリンクは、両方の JSR が 2 つの異なるプロジェクト ( FindBugs とChecker Framework ) に関連していることです。これらのプロジェクトは、null 安全性と null 可能性の注釈のトピックに触れています。

内容的には、JSR に関連性はまったくありません。

于 2021-05-06T09:35:45.997 に答える
1

Alex MillersのJava 7 ブログによると、JSR-308 (および 305) は Java 7 に組み込まれる予定です。おそらく彼はここに現れて、詳細な情報を提供してくれるでしょう。

于 2010-02-18T15:27:16.693 に答える