1.カスタムアノテーションの文法
@interfaceを使用してカスタムアノテーションを定義すると、java.lang.annotation.Annotationインターフェースが自動的に継承されます。
1)@interfaceはアノテーションを宣言するために使用されます
2)これらの各メソッドは実際に構成パラメーターを宣言します
a)メソッドの名前はパラメーターの名前です
b)戻り値の型はパラメーター型です(戻り値の型は、基本型、クラス、文字列、列挙型のみです)
c)パラメータのデフォルト値はデフォルトで宣言できますd)メンバーが1つだけの場合、一般的なパラメータ名はvalueです
注意が必要な事項:
- アノテーション要素には値が必要です。アノテーション要素を定義するとき、空の文字列を使用することが多く、デフォルト値は0です。
- 存在しないことの意味を示すために、負の数(-1など)を使用することも多い
2.メタ注釈
メタ注釈の機能は、他の注釈に注釈を付ける責任があります。4つの標準メタ注釈タイプがJavaで定義されており、他の注釈タイプの説明を提供するために使用されます
これらのタイプとそれらがサポートするクラスは、java.lang.annotationパッケージにあります。
1)@Target 2)@Retention 3)@Documented 4)@Inherited
3、@ Target
役割:アノテーションの使用範囲を説明するために使用されます(つまり、説明されたアノテーションを使用できる場所)
例:@Target(value = ElementType.TYPE)
4、@ Retention
機能:アノテーション情報を保存する必要があるレベルを示し、アノテーションのライフサイクルを説明するために使用されます
カスタムノート1:
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; / ** * ClassName:MyAnnotation *日付:2020/4/16 10:25 * * @author 王鼎宇 * / @Target(ElementType.METHOD) @Retention(RetentionPolicy.CLASS) public @ interface MyAnnotation { String stuName()default " "; // メソッドの名前はパラメータの名前stuName() //戻り値の型はパラメータ型です(戻り値の型は基本型、Class、String、enumのみです) // パラメータのデフォルト値を宣言するデフォルト、多くの場合空の文字列をデフォルト値として使用します int age()default 0 ; String [] school()default {"B Station University"、 "Tsinghua University" }; }
カスタムノート2:
1 インポートjava.lang.annotation.ElementType; 2 インポートjava.lang.annotation.Retention; 3 java.lang.annotation.RetentionPolicyをインポートします。 4 import java.lang.annotation.Target; 5 6 / ** 7 * ClassName:MyAnnotation2 8 *日付:2020/4/16 10:31 9 * 10 * @author 王鼎佑 11 * / 12 @Target({ElementType.TYPE、ElementType.METHOD}) 13 @Retention( RetentionPolicy.RUNTIME) 14 public @ interface MyAnnotation2 { 15 String value(); //メンバーが1つしかない場合、一般的なパラメーター名は値
16 }
1 // @MyAnnotationこのアノテーションはメソッドにのみ適用できます 2 // @ MyAnnotation2(value = "aaaa") 3 @ MyAnnotation2( "aaa" ) 4 public class Test5 { 5 @MyAnnotation(stuName = "王一一" ) 6 public static void show(){ 7 } 8 @MyAnnotation(stuName = "乔二二"、age = 23、school = {"Home Squatting University"、 "Lanxiang University" }) 9 public void method(){ 10 11 } 12 }