Java 7プロジェクトでJSR 308タイプの注釈を使用できますか(@NonNull
など)?はいの場合、関連する依存関係は何ですか?Java 7のアノテーション(JSR 308)タイプですか?
答えて
はい...並べ替え。型の注釈はJava 8で導入されているため、Java 7ではまったく動作しません。たとえば、OpenJDK 308の実装は、OpenJDK 8 JDKにあります。だからあなたはそれを使うことはできません。
しかし、Java 7の型注釈をコメントアウトすることができますが、それでも使用することができますが、これを回避するチェッカーフレームワークを使用することができます。セットアップはhereと記載されています。 「Javaの7プロジェクト」、私はあなたが「Javaの7コンパイラを使ってコンパイルすることができますプロジェクト」を意味すると仮定することにより
<dependency>
<groupId>org.checkerframework</groupId>
<artifactId>checker</artifactId>
<version>1.9.12</version>
</dependency>
:あなたは、次のMavenの依存関係が必要になります。型の注釈はJava 8の機能です。たとえば、lambdaのようなものを使用すれば、標準のJava 7コンパイラでコードをコンパイルすることはできません。
List</*@NonNull*/ String>
のようなタイプの注釈written in commentsを読み取る特別なコンパイラ、type annotations compilerがあります。このようなファイルを通常のJava 7コンパイラでコンパイルすると、コンパイラはコメントを無視します。これはあなたのコードが両方の型の注釈を使用し、Java 7と互換性がある方法です。
Checker Frameworkは、特殊なコンパイラと注釈プロセッサーをパッケージ化しています。これは、正しくない@NonNull
注釈とコード内で可能なヌルポインタ例外について警告します。 annotations in commentsのディスカッションを見ることができます。
Maven integration for the Checker Frameworkがあります。 Java 7の方向性を選択したいと思うでしょう。
ありがとうございました。私はそれを確認します。 – Aure77