ホームページ  >  記事  >  Java  >  Java ナレッジポイントの詳細な説明: アノテーションとメタアノテーション

Java ナレッジポイントの詳細な説明: アノテーションとメタアノテーション

WBOY
WBOY転載
2022-05-13 11:57:181589ブラウズ

この記事では、java に関する関連知識を提供します。主に、アノテーションの基本的な概要、アノテーションの基本的な概要など、アノテーションとメタアノテーションに関連する問題を紹介します。見てみましょう。ぜひ、皆さんのお役に立てれば幸いです。

Java ナレッジポイントの詳細な説明: アノテーションとメタアノテーション

推奨学習: 「java ビデオ チュートリアル

1. アノテーションの基本入門

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

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

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

JavaSE では、アノテーションを使用する目的は、廃止された関数にマークを付ける、警告を無視するなど、比較的単純です。アノテーションは、Java EE でより重要な役割を占めています。たとえば、アプリケーションのあらゆる側面を構成するために使用され、古いバージョンの Java EE に残っていた煩雑なコードと XML 構成を置き換えます。


#2. アノテーションの基本概要

1. 3 つの基本的なアノテーション

#@オーバーライド : メソッドを制限するには、親クラスのメソッドをオーバーライドします。 このアノテーションはメソッドにのみ使用できます

@非推奨

: 特定のプログラム要素を表すために使用されます ( ###親切### 方法など ) 古い@SuppressWarnings

: コンパイラ警告を抑制します##2. コード例


@Override

class Son extends Father{

    @Override
    public void play(){}

}

注:

@Override は、サブクラスの再生メソッドが親クラスの再生メソッドをオーバーライドすることを示します

ここに

が書かれていない場合 @オーバーライド

それでも親クラス ply をオーバーライドします

@Override アノテーションを記述すると、コンパイラはメソッドが本当に親クラスをオーバーライドするかどうかを確認します メソッド、本当に書き換えられていればコンパイルは通りますが、書き換えられていない場合はコンパイルエラーになります。

@Override はメソッドのみを変更でき、他のクラス、パッケージ、プロパティなどは変更できません。

@非推奨

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

    @Deprecated
    public void play(){ }
}

注:

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

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

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

@


警告を抑制

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

注意:

         关于 SuppressWarnings 作用范围是和你放置的位置相关。比如@SuppressWarnings 放置在 main 方法,那么抑制警告的范围就是 main

         通过 @SuppressWarnings 的源码可知,其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。


三、@SuppressWarnings的指定警告类型

##synthetic-access内部クラスへの最適化されていないアクセスに関連する警告を抑制しますsync-override同期メソッドのオーバーライドを抑制します同期失敗の警告未チェック未チェックのジョブに関連する警告を表示して抑制#unqualified-field-access
关键字 解释
all 抑制所有警告
boxing 抑制与封装/拆装作业相关的警告
cast 抑制与强制转型作业相关的警告
dep-ann 抑制与淘汰注释相关的警告
deprecation 抑制与淘汰的相关警告
fallthrough 抑制与 switch 陈述式中遗漏 break 相关的警告
finally 抑制与未传回 finally 区块相关的警告
hiding 抑制与隐藏变数的区域变数相关的警告
incomplete-switch 抑制与 switch 陈述式(enum case)中遗漏项目相关的警告
javadoc 抑制与 javadoc 相关的警告
nls 抑制与非 nls 字串文字相关的警告
null 抑制与空值分析相关的警告
rawtypes 抑制与使用 raw 类型相关的警告
resource 抑制与使用 Closeable 类型的资源相关的警告
restriction 抑制与使用不建议或禁止参照相关的警告
serial 抑制与可序列化的类别遗漏 serialVersionUID 栏位相关的警告
static-access 抑制与静态存取不正确相关的警告
static-method 宣言される可能性のあるメソッドに関連する警告を抑制します static
#super スーパー コールを含まない置換メソッドに関連する警告を抑制します
失敗したフィールドに関連する警告を抑制するaccess ##unused
未使用および非アクティブ化に関する警告を抑制するコード##################

4. メタ アノテーション

1. 基本的な紹介

##▶ メタ アノテーションとは:

## メタ アノテーションは、アノテーションを説明するアノテーションです。メタ アノテーションが付けるアノテーションは、@Override、@Deprecated、## など、前に紹介したアノテーションです。 #@SuppressWarnings

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

# Retention: アノテーションの適用範囲、SOURCE、CLASS、RUNTIMEの3種類を指定

Target:

アノテーションを使用できる場所を指定 #

▶ 注釈に関する注意事項:

, 注釈はクラスのバイトコード ファイルに存在しますが、実行時に取得できません。

注釈はクラスのバイトコードに存在します。 まず第一に、ライフサイクルの長さ SOURCE

①: 一般に、runtime でアノテーション情報を動的に取得する必要がある場合は、RUNTIME アノテーションのみを使用できます。 ## 補助コードの生成など、一部の前処理操作 ( Butterknife など)、クラス ノートを使用します; ③: いくつかの
チェックイン SuppressWarnings を実行するだけであれば、SOURCE アノテーションを使用できます。


#2. 保持の注釈

#説明:

はアノテーション定義の変更にのみ使用できます。


アノテーション
を指定するために使用されます。

保持できる期間。@Rentention には RetentionPolicy 型のメンバー変数が含まれます。

@Rentension を使用する場合、これは 値である必要があります。

##メンバ変数は値を指定します(値は3種類あります)。

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

RetentionPolicy.CLASS: コンパイラーはクラス に注釈を記録します。 ファイル内 . 実行時 Java プログラム時間 、JVM 注釈は保持されません。これはデフォルト値です。

RetentionPolicy.RUNTIME: コンパイラーはクラス にアノテーションを記録します。 ファイル内 . 実行時 Java プログラム時間 、JVM 注釈は保持されます . プログラムはリフレクションを通じてこのアノテーションを取得できます。


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

説明:

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


#4、文書化された注釈

説明:

#@Documented: このメタアノテーションによって変更された Annotation クラスが javadoc ツールによってドキュメントに抽出されること、つまりドキュメントの生成時にアノテーションが表示されることを指定するために使用されます。 ############### ############知らせ:################## ### @Documented として定義されたアノテーションは、保持値を RUNTIME に設定する必要があります。

#5. 継承されたアノテーション 説明:

@Inherited によって変更されたアノテーションは継承を持ちます。クラスが @Inherited によって変更されたアノテーションを使用する場合、そのサブクラスは自動的に継承を持ちます。このアノテーション

を学習することをお勧めします:「Java ビデオ チュートリアル

以上がJava ナレッジポイントの詳細な説明: アノテーションとメタアノテーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。