工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java アノテーション

Java アノテーション

このチュートリアルでは、注釈とは何か、さまざまな Java 注釈、および例を使用してそれらの使用方法を学習します。

Java アノテーションは、プログラム ソース コードのメタデータ (データに関するデータ) です。

これらは、プログラムに関する追加情報をコンパイラーに提供しますが、プログラム自体の一部ではありません。これらの注釈は、コンパイルされたプログラムの実行には影響しません。

@ で始まる注釈 .その構文は次のとおりです:

@AnnotationName

@Override の例を見てみましょう 注釈。

@Override アノテーションは、このアノテーションでマークされたメソッドが、同じメソッド名、戻り値の型、およびパラメーター リストを持つスーパークラスのメソッドをオーバーライドすることを指定します。

@Override の使用は必須ではありません メソッドをオーバーライドするとき。ただし、これを使用すると、メソッドのオーバーライド中に何か問題がある場合 (パラメーターの型が間違っているなど)、コンパイラーはエラーを返します。

例 1:@Override アノテーションの例

class Animal {
  public void displayInfo() {
    System.out.println("I am an animal.");
  }
}

class Dog extends Animal {
  @Override
  public void displayInfo() {
    System.out.println("I am a dog.");
  }
}

class Main {
  public static void main(String[] args) {
    Dog d1 = new Dog();
    d1.displayInfo();
  }
}

出力

I am a dog.

この例では、メソッド displayInfo() 両方のスーパークラス Animal に存在します サブクラス Dog .このメソッドが呼び出されると、スーパークラスのメソッドの代わりにサブクラスのメソッドが呼び出されます。


注釈の形式

注釈には、要素 (メンバー/属性/パラメーター) を含めることもできます。

1.マーカー注釈

マーカー注釈には、メンバー/要素は含まれません。宣言をマークするためにのみ使用されます。

その構文は次のとおりです:

@AnnotationName()

これらの注釈には要素が含まれていないため、括弧は除外できます。たとえば、

@Override

2.単一要素の注釈

1 つの要素の注釈には、1 つの要素のみが含まれます。

その構文は次のとおりです:

@AnnotationName(elementName = "elementValue")

要素が 1 つしかない場合、その要素に value という名前を付けるのが慣習です。 .

@AnnotationName(value = "elementValue")

この場合、要素名も除外できます。要素名は value になります

@AnnotationName("elementValue")

3.複数要素の注釈

これらの注釈には、コンマで区切られた複数の要素が含まれています。

その構文は次のとおりです:

@AnnotationName(element1 = "value1", element2 = "value2")

注釈の配置

宣言は、その宣言の上に配置することにより、注釈でマークできます。 Java 8 では、型の前に注釈を配置することもできます。

1.上記の宣言

前述のように、Java アノテーションは、クラス、メソッド、インターフェース、フィールド、およびその他のプログラム要素宣言の上に配置できます。

例 2:@SuppressWarnings アノテーションの例

import java.util.*;

class Main {
  @SuppressWarnings("unchecked")
  static void wordsList() {
    ArrayList wordList = new ArrayList<>();

// This causes an unchecked warning
    wordList.add("programiz"); 

    System.out.println("Word list => " + wordList);
  }

  public static void main(String args[]) {
    wordsList();
  }
}

出力

Word list => [programiz]

@SuppressWarnings("unchecked") を使用せずに上記のプログラムをコンパイルすると、 注釈、コンパイラは引き続きプログラムをコンパイルしますが、次のような警告が表示されます:

Main.java uses unchecked or unsafe operations.
Word list => [programiz]

警告を受けています

Main.java uses unchecked or unsafe operations

以下のステートメントのためです。

ArrayList wordList = new ArrayList<>();

これは、配列リストのジェネリック型を定義していないためです。この警告は、山括弧 <> 内にジェネリックを指定することで修正できます .

ArrayList<String> wordList = new ArrayList<>();

2.型注釈

Java 8 より前は、アノテーションは宣言にのみ適用できました。これで、型注釈も使用できるようになりました。これは、型を使用する場所ならどこにでも注釈を配置できることを意味します。

コンストラクターの呼び出し

new @Readonly ArrayList<>()

型の定義

@NonNull String str;

この宣言は、null 以外の変数 str を指定しています タイプ StringNullPointerException を避ける .

@NonNull List<String> newList;

この宣言は、タイプ String の非 null リストを指定します .

List<@NonNull String> newList;

この宣言は、型 String の非 null 値のリストを指定します .

型キャスト

newStr = (@NonNull String) str;

条項の拡張と実装

class Warning extends @Localized Message

throws 節

public String readMethod() throws @Localized IOException

型注釈により、Java コードの分析が向上し、さらに強力な型チェックが提供されます。


注釈の種類

1. 定義済みの注釈

<オール>
  • @Deprecated
  • @Override
  • @SuppressWarnings
  • @SafeVarargs
  • @FunctionalInterface
  • 2. メタアノテーション

    <オール>
  • @Retention
  • @Documented
  • @Target
  • @Inherited
  • @Repeatable
  • 3. カスタム アノテーション

    これらの注釈型については、Java 注釈型のチュートリアルで詳しく説明されています。


    注釈の使用


    Java

    1. Java オペレーター
    2. Java コメント
    3. Java if...else ステートメント
    4. Java for-each ループ
    5. Java break ステートメント
    6. Java 文字列
    7. Java インターフェイス
    8. Java匿名クラス
    9. Java try-with-resources
    10. Java アサーション
    11. Java ベクトル