(JAVA):アノテーションとメタアノテーションの詳細な紹介。理解するために、ソースコードを見るとそれらに出くわします。

コンテンツ

1.注釈の基本的な紹介☺☺

第二に、アノテーションの基本的な紹介☺☺

1.3つの基本的な注釈☺

2.コード例☺

3.指定された@SuppressWarningsの警告タイプ☺☺

4.メタアノテーション☺☺

1.基本的な紹介☺

2.保持アノテーション☺

3.ターゲットアノテーション☺

4、文書化された注釈☺

5.継承された注釈☺


1.注釈の基本的な紹介☺☺

        メタデータ(Metadata)とも呼ばれるアノテーション(annotation)は、JDK1.5以降のバージョンで導入され、パッケージ、クラス、メソッド、プロパティ、コンストラクター、ローカル変数などのデータ情報を変更および解釈するために使用されます。ドキュメントの作成、コード内の依存関係の追跡、さらには基本的なコンパイル時チェックの実行にも使用できます。

        コードには「@annotationname」のアノテーションが存在します。アノテーションパラメータの数に応じて、アノテーションをマーク付きアノテーション、単一値アノテーション、完全アノテーションの3つのカテゴリに分類できます。コメントと同様に、注釈はプログラムロジックに影響を与えませんが、コードに埋め込まれた補足情報としてコンパイルまたは実行できます。

        さらに、コンパイル時に、コード内の注釈がソースコードレベルでのみ存在するか、クラスファイルに表示されるか、実行時に表示されるか(SOURCE / CLASS / RUNTIME)を選択できます。

        JavaSEでは、アノテーションは、廃止された機能のマーク付け、警告の無視など、より単純な目的で使用されます。アノテーションは、Java EEでより重要な役割を果たします。たとえば、アプリケーションのあらゆる側面を構成し、古いバージョンのJavaEEから残された面倒なコードとXML構成を置き換えます。


第二に、アノテーションの基本的な紹介☺☺

1.3つの基本的な注釈☺

@Override  :メソッドを制限するには、親クラスのメソッドをオーバーライドします このアノテーションはメソッドにのみ使用できます
▶  @Deprecated  :プログラム要素(クラスメソッドなどが廃止 されたことを示すために使用されます
@SuppressWarnings  :コンパイラの警告を抑制します

2.コード例☺

①:@Override

class Son extends Father{

    @Override
    public void play(){}

}

知らせ:

        ▷@Overrideは、サブクラスのplayメソッドが親クラスのplayをオーバーライドすることを示します
        ▷  @Overrideがここに記述されていない 場合でも 、親クラスのplyは書き換えられます
        ▷@Overrideアノテーションを記述すると、コンパイラはメソッドが実際 に親クラスのメソッドをオーバーライドするかどうかをチェックします。オーバーライドする場合はコンパイルに合格し、オーバーライドを構成しない場合はコンパイルエラーになります。
        ▷@Overrideはメソッドのみを変更でき、他のクラス、パッケージ、プロパティなどは変更できません。

②:@非推奨

@Deprecated
class A{
    @Deprecated
    public static int name = 1;

    @Deprecated
    public void play(){ }
}

知らせ:

        ▷ 廃止されたということは、使用できないという意味ではありません。推奨されていませんが、引き続き使用できます。

        ▷ メソッド、クラス、フィールド、パッケージ、パラメータなどを変更できます。

        ▷ その機能は、古いバージョンと新しいバージョンの間の互換性と移行を実現することです


③:@ SuppressWarnings

        

@SuppressWarnings ("all")
public class word{ }

知らせ:

        ▷  SuppressWarningsについてアクションの範囲は、配置した場所に関連しています。たとえば、@ SuppressWarningsがmainメソッドに配置されている場合、警告を抑制するスコープはmainです。

        ▷  @SuppressWarningsのソースコードによると、そのアノテーションターゲットは、クラス、フィールド、関数、関数入力パラメーター、コンストラクター、および関数のローカル変数です。


3.指定された@SuppressWarnings警告タイプ☺☺

キーワード 説明
すべて すべての警告を抑制します
ボクシング 梱包/分解作業に関連する警告を抑制します
キャスト キャストジョブに関連する警告を抑制します
dep-ann 廃止されたアノテーションに関連する警告を抑制します
非推奨 関連する警告を抑制および段階的に廃止する
フォールスルー switchステートメントの中断の省略に関連する警告を抑制します
ついに 最終的にブロックを返さないことに関連する警告を抑制します
隠蔽 隠れた変数を持つエリア変数に関連する警告を抑制します
不完全なスイッチ switchステートメントの欠落している項目に関連する警告を抑制します(列挙型の場合)
javadoc javadocに関連する警告を抑制します
nls nls以外の文字列リテラルに関連する警告を抑制します
ヌル null分析に関連する警告を抑制します
rawtypes rawタイプの使用に関連する警告を抑制します
資源 Closeableタイプのリソースの使用に関連する警告を抑制します
制限 非推奨または禁止されている参照の使用に関連する警告を抑制します
シリアル serialVersionUIDフィールドが欠落しているシリアル化可能なクラスに関連する警告を抑制します
静的アクセス 誤った静的アクセスに関連する警告を抑制します
静的メソッド 静的と宣言される可能性のあるメソッドに関連する警告を抑制します
素晴らしい スーパーコールなしの置換メソッドに関連する警告を抑制します
合成アクセス 内部クラスへの最適化されていないアクセスに関する警告を抑制します
同期オーバーライド 同期方法の並べ替えによる同期の失敗の警告を抑制します
チェックされていない 未チェックのジョブに関連する警告を抑制します
unqualified-field-access 修飾されていないフィールドアクセスに関連する警告を抑制します
未使用 未使用のコードと無効なコードに関連する警告を抑制します

4.メタアノテーション☺☺

1.基本的な紹介☺

▶メタアノテーションとは何ですか:

        メタアノテーションは、アノテーションを説明するアノテーションです。アノテーションを付けるオブジェクトは、@ Override、@ Deprecated  、@ SuppressWarningsなど、以前に導入したアノテーションです。       

 ▶4種類のメタアノテーション:

         ▷  保持:注釈の範囲、3種類のSOURCE、CLASS、RUNTIMEを指定します
         ▷ ターゲット:注釈を使用できる場所を指定します
         ▷ 文書化:注釈をjavadocに反映するかどうかを指定します
         ▷ 継承:サブクラスは親クラスのアノテーションを継承します
▶注釈に関する注記:
        ▷  アノテーションはソースコードにのみ存在し         、 クラス バイトコードファイルには含ま

        れ  ていません。存在、実行時にリフレクションによって取得できます         ▷ まず、ライフサイクルの長さを明確にする必要がありますSOURCE <CLASS <RUNTIME、ここで前者は機能し、後者も機能する必要があります。



①:通常、実行時にアノテーション情報を動的に取得                 する 必要がある、RUNTIMEアノテーションのみを使用できます。
                ② 補助コード(ButterKnifeなど)の生成など、コンパイル時にいくつかの前処理操作を実行する場合は、CLASSアノテーションを使用します。
                ③ @Overrideや@SuppressWarningsなどの検査操作を行うだけの場合は、SOURCEアノテーションを使用できます。

2.保持アノテーション☺

▲説明:

         アノテーション定義を変更して、アノテーションを保持できる期間を指定する場合にのみ使用できます。@ RententionにはRetentionPolicyタイプのメンバー変数が含まれます。@Rentention使用する場合は、値のメンバー変数の値を指定する必要があります(3つの値があります)。 )。

     

▲3つの値:

         ▷  RetentionPolicy.SOURCE:コンパイラがそれを使用した後、このポリシーのコメントを直接破棄します。

          ▷  RetentionPolicy.CLASS:コンパイラは注釈をクラス ファイルに記録します 。Javaプログラムを実行している場合 JVMは注釈を保持しません。これがデフォルト値です。
          ▷  RetentionPolicy.RUNTIME: コンパイラは注釈をクラス ファイルに記録し ます 。Javaプログラム を実行する と、JVMは注釈を保持します。プログラムはリフレクションを通じて注釈を取得できます。

3.ターゲットアノテーション☺

▲説明:

        注釈定義を装飾するために使用され、装飾された注釈を装飾に使用できるプログラム要素を指定します。@Targetには、valueという名前のメンバー変数も含まれています。


4、文書化された注釈☺

▲説明:

        @Documented:このメタアノテーションによって変更されたAnnotationクラスがjavadocツールによってドキュメントに抽出されることを指定するために使用されます。つまり、ドキュメントの生成時にアノテーションを表示できます。

▲ 注:

        @Documentedとして定義されたアノテーションは、保持値をRUNTIMEに設定する必要があります。


5.継承されたアノテーション☺

▲説明:

        @AliExpressによって変更されたアノテーションには継承があります。クラスが@Explicitによって変更されたアノテーションを使用する場合、そのサブクラスには自動的にアノテーションが付けられます。

おすすめ

転載: blog.csdn.net/yzh2776680982/article/details/124356590
おすすめ