ホームページ  >  記事  >  Java  >  Javaのアノテーションとは何ですか?

Javaのアノテーションとは何ですか?

青灯夜游
青灯夜游オリジナル
2019-12-26 14:28:055238ブラウズ

Java 5.0 でアノテーションが導入されて以来、アノテーションは Java プラットフォームの非常に重要な部分になりました。開発プロセスでは、アプリケーション コード内に @Override や @Deprecated などの注釈が頻繁に表示されます。では、注釈とは何でしょうか?以下に紹介させていただきます。

Javaのアノテーションとは何ですか?

注釈とは何ですか?

注釈はメタデータとも呼ばれ、データを説明するデータの一種です。注釈は JDK 1.5 で導入された機能です。コードを説明するために使用され、パッケージ、クラス、インターフェイス、フィールド、メソッド パラメーター、ローカル変数などに注釈を付けることができます。

注釈の用途は何ですか?

正式な説明:

注釈は、プログラム コードを説明するデータを提供する一連のメタデータですが、解釈されるコード自体の一部ではありません。注釈はコードの実行パフォーマンスに直接影響しません。

1. コンパイラに情報を提供する: コンパイラはアノテーションを使用してエラーや警告メッセージを検出できます

たとえば、@Override は、親クラスで変更されたメソッドをオーバーライドするようにサブクラスに指示します

2. コンパイル段階での処理: ソフトウェア ツールを使用して、注釈情報を使用してコード、HTML ドキュメントを生成したり、その他の対応する処理を実行したりできます。

3. 実行時処理: 特定のアノテーションは、プログラムの実行中にコード抽出を受け入れることができます。

アノテーションは主にコンパイラーやその他のツール ソフトウェアを対象としています。開発者がクラスなどのメンバーを変更した後にアノテーションを使用する場合に使用します。 、メソッド、およびフィールドの場合、これらのアノテーションは単独では有効になりません。開発者は、アノテーション情報を抽出して処理するための対応するコードを提供する必要があります。アノテーションの抽出と処理を行うこれらのコードを総称して APT (Annotation Processing Tool) と呼びます。

アノテーションは 3 つのカテゴリに分類できます。

● 1 つのタイプは、@Override (マークが付いている @Override など) Java に付属する標準アノテーションです。特定のメソッドをオーバーライドする)、@Deprecated (クラスまたはメソッドが非推奨であることを示す)、および @SuppressWarnings (無視される警告を示す) を使用すると、コンパイラーはこれらのアノテーションを使用した後にチェックします。

# 1 つのタイプはメタ アノテーションです。メタ アノテーションは、@Retention (アノテーションが保持される段階を示す)、@Target (アノテーションの使用範囲を示す) など、アノテーションを定義するために使用されるアノテーションです。 )、@Inherited (アノテーションの使用範囲を示す)、Inheritable)、@Documented (javadoc ドキュメントを生成するかどうかを示す)、@Repeatable。

# 1 つのタイプはカスタム アノテーションです。独自のニーズに応じてアノテーションを定義できます。

メタ アノテーション

メタ アノテーションにはアノテーションを付けることができます。アノテーション アノテーション、またはメタアノテーションは基本的なアノテーションですが、他のアノテーションにも適用できます。より明確に言うと、アノテーションを定義するときに使用するアノテーションはメタアノテーションです。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
}

@ 記号を除けば、アノテーションはインターフェイスによく似ています。アノテーションを定義する場合はメタアノテーションが必要です。

通常、注釈には特定の値を表すいくつかの要素があります。注釈付き要素はインターフェイス メソッドとまったく同じように見えますが、唯一の違いは、それらのデフォルト値を指定できることです。要素のないアノテーションはマーク アノテーションと呼ばれ、上記の @Test はマーク アノテーションです。

利用可能なアノテーションのタイプには、すべての基本タイプ、String、Class、enum、Annotation、および上記のタイプの配列形式が含まれます。要素には未定義の値を含めることはできません。つまり、デフォルト値を持つことも、注釈を使用するときに要素の値を提供することもできません。また、要素ではデフォルト値として null を使用できません。アノテーションの要素が 1 つだけで、要素名が value の場合、アノテーションを使用する際に「value=」を省略し、必要な値を直接記述することができます。

メタアノテーションには、@Retention、@Documented、@Target、@Inherited、@Repeatable の 5 種類があります。

@Retention

英語で保持期間という意味です。 @Retention がアノテーションに適用されると、アノテーションの有効期間が説明されます。

@Documented

このメタアノテーションはドキュメントに関連している必要があります。その機能は、アノテーション内の要素を Javadoc に含めることです。

@Target

ターゲットの意味、@Target はアノテーションが使用される場所を指定します

@ Inherited

Inherited は継承を意味しますが、アノテーション自体を継承できるという意味ではありません。スーパークラスに @Inherited アノテーションが付けられている場合、そのサブクラスがどのアノテーションによっても適用されない場合を意味します。したがって、このサブクラスはスーパークラスのアノテーションを継承します

@Repeatable

Repeatable は当然のことながら反復可能を意味します。 @Repeatable は Java 1.8 でのみ追加されたため、新機能とみなされます。

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

以上がJavaのアノテーションとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。