サーチ…


前書き

アノテーションプロセッサは、コンパイル時に注釈をスキャンして処理するためのjavacのツールビルドです。

アノテーションは、クラス、メソッド、フィールド、さらにはその他のアノテーションに関連付けることができるメタデータのクラスです。アノテーションプロセッサを介して、リフレクションおよびコンパイル時にこれらのアノテーションに実行時にアクセスする2つの方法があります。

@NonNullアノテーション

public class Foo {
    private String name;
    public Foo(@NonNull String name){...};
    ...
}

ここで@NonNullは、特定の関数が非nullパラメータを必要とすることを警告するためにアンドロイドスタジオによってコンパイルされた時に処理されるアノテーションです。

注釈のタイプ

アノテーションには3つのタイプがあります。

  1. マーカーアノテーション - メソッドを持たないアノテーション

    @interface CustomAnnotation {}
    
  1. 単一値アノテーション - 1つのメソッドを持つアノテーション

    @interface CustomAnnotation {  
        int value();  
    }
    
  1. 複数値の注釈 - 複数の方法を持つ注釈

    @interface CustomAnnotation{  
        int value1();  
        String value2();  
        String value3();  
    }
    

カスタム注釈の作成と使用

カスタムアノテーションを作成するには、

  • ターゲット - これらのアノテーションは、フィールドレベル、メソッドレベル、タイプレベルなどで動作します。
  • 保持 - どのレベルの注釈が利用可能になるか。

このために、カスタムアノテーションを組み込みました。これらは主に使用されているものをチェックしてください:

@ターゲット

ターゲットとその意味

@保持

保持とその意味

カスタム注釈の作成

@Retention(RetentionPolicy.SOURCE) // will not be available in compiled class   
@Target(ElementType.METHOD) // can be applied to methods only
@interface CustomAnnotation{  
      int value();    
}

カスタムアノテーションの使用

class Foo{  
  @CustomAnnotation(value = 1)  // will be used by an annotation processor
  public void foo(){..}  
}

@CustomAnnotation内で提供される値は、Annotationprocessorによって消費され、コンパイル時などにコードを生成することがあります。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow