ホームページ  >  記事  >  Java  >  Java アノテーション

Java アノテーション

WBOY
WBOYオリジナル
2024-08-30 16:06:26503ブラウズ

アノテーションは、Java Development Kit (JDK) の 1.5 バージョンで導入または使用可能になりました。 Java のアノテーションは、コード構造内に存在するデータに関する詳細情報、つまりメタデータとも呼ばれるデータに関するデータを提供します。

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

アノテーションは、標準化された方法でコード内のメタデータを定義するのに役立ちます。また、アノテーションは、Java コードのコンパイル中に従うべき指示を Java コンパイラに提供するのにも役立ちます。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

Java アノテーション

注釈を使用するときは、「@」記号の後に注釈の名前を続けて使用します。これにより、コンパイラーは注釈を注釈として扱います。

注釈は以下の前に追加できることに注意することが重要です。

  • クラス宣言
  • メンバー変数宣言
  • コンストラクター宣言
  • メソッド宣言
  • パラメータ宣言
  • ローカル変数宣言。

覚えておくべき重要な点は、すべてのアノテーションが java.lang.annotation.Annotation インターフェースを拡張するということです。また、注釈には拡張句を含めることはできません。

組み込み Java アノテーション

Java には、@Override、@Deprecated、@SuppressWarnings などの組み込みアノテーションがあり、これらは特定の目的のために設計され、上記の状況のいずれか (たとえば、クラスのみ、またはクラスのみ) で使用されます。メソッドなど

例 #1 – オーバーライド

コード:

class Dad {
public void say() {
System.out.println("Do your homework");
}
}
public class Child extends Dad {
@Override
public void say(){
System.out.println("I wanna play");
}
public static void main(String args[]){
Dad daddy = new Child();
daddy.say();
}
}

出力:

Java アノテーション

例 #2 – 非推奨

コード:

public class Outdated
{
@Deprecated
public void oldShow()
{
System.out.println("This Method is deprecated");  }
public static void main(String args[])
{
Outdated  od = new Outdated ();
od.oldShow();
}
}

出力:

Java アノテーション

Java アノテーション

メタ注釈

メタアノテーションには 5 つのタイプがあります:

  1. 文書化 – このアノテーションを使用するメンバー、変数、またはクラスが Javadoc または利用可能な他の同様のツールによって文書化される必要があることを通知します。
  2. ターゲット – どのタイプでアノテーションが使用されるかを指定するために使用されます。これは主にカスタム注釈と一緒に使用されます。
  3. Inherited – サブクラスに継承されるアノテーションをマークします。
  4. 保持 – 注釈付きタイプの注釈が保持される期間を示します。これは、保持ポリシー引数を受け取ります。その可能な値は、SOURCE、CLASS、および RUNTIME です。
  5. Repeatable – これは、宣言に注釈が付けられる注釈タイプが繰り返し可能であることを示します。

例 – 文書化と保持

コード:

import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface RSample {
String rentent();
}
@Documented
@interface DSample {
String doc();
}
public class MetaAnnotate {
public static void main(String arg[])
{
new MetaAnnotate().rentent();
new MetaAnnotate().doc();
}
@RSample (rentent="Meta Info R")
public void rentent() {
System.out.println("Retention Policy Applied");
}
@DSample(doc="Meta Info D")
public void doc() {
System.out.println("Code Documented with the value");
}
}

出力:

Java アノテーション

説明:

  • RetentionPolicy.RUNTIME – この値は、注釈値が Java リフレクションを介した検査のために実行時に利用可能である必要があることを指定します。
  • Javadoc コマンドを実行して、コードのドキュメントを表示します。

注釈の種類

注釈には 3 つのカテゴリがあり、次のとおりです。

1.マーカー注釈 – これらのタイプの注釈は、以下の関数またはクラスが何であるかを開発者に通知するための宣言として使用されます。つまり、関数が別の関数をオーバーライドしているかどうかなど、関数またはクラスに関する追加情報を共有します。非推奨になった関数など。 @Override、@Deprecated はマーカー アノテーションと見なされます。

例: DemoAnnotation()

2.単一値の注釈 – この種の注釈は、注釈が前に配置されるメンバーの値を指定する値を取り込むため、そのメンバーの名前を指定する必要はありません。

例: DemoAnnotation(“custId123”)

3.完全な注釈 – この種の注釈は、複数の値、ペア、メンバーを受け取ります。

例: DemoAnnotation(category=”Toys”, value=1500)

カスタム

以下の例に示すように、カスタム注釈はユーザー インターフェイスによって作成され、その後に注釈名が続きます。

ファイル 1: 定義されたカスタム アノテーション

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface Magicians
{
String Wizard() default "Reynolds";
String House() default "Green";
}
@Magicians
public class Magician
{
@Magicians(Wizard = "Harry Potter", House = "Red")
public String getString()  {  return null; }
}

ファイル 2: カスタム アノテーション クラスを呼び出すメイン クラス

import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
public class MyCustomAnnotation
{
public static void main(String[] args) throws NoSuchMethodException, SecurityException
{
new Magician();
Class<Magician> magic = Magician.class;
readAnnotationOn(magic);
Method method = magic.getMethod("getString", new Class[]{});
readAnnotationOn(method);
}
static void readAnnotationOn(AnnotatedElement element)
{
try
{
System.out.println("\n Find annotations on " + element.getClass().getName());
Annotation[] annotations = element.getAnnotations();
for (Annotation annotation : annotations)
{
if (annotation instanceof Magicians)
{
Magicians mData = (Magicians) annotation;
System.out.println("Wizard Name :" + mData.Wizard());
System.out.println("Wizard House Color :" + mData.House());
}
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}

出力:

Java アノテーション

結論

この記事では、Java アノテーションとは何か、その型について例を交えて説明し、Java が提供する組み込みアノテーションの例を確認し、カスタム アノテーションをコーディングしました。コードの標準化に役立ち、コードとその構造をより深く理解するのにも役立つ注釈を確認しました。

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

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