ベース補強_注記Annotation
3032 ワード
--------androidトレーニング、javaトレーニング、ご交流をお待ちしております!--------
1つの注釈はクラスであり、注釈を使用するとこの注釈を使用するオブジェクトになります.注釈はタグに相当し、javacコンパイラ、開発ツール、その他のプログラムは反射で注釈を取得することができます.注記は、パッケージ、クラス、フィールド、メソッド、メソッドのパラメータ、およびローカル変数に追加できます.
@SupressWarnings("deprecation")/注記、圧縮警告RetentionPolicy.SOURCE@Deprecated//時代遅れRetentionPolicy.RUNTIME@Override//RetentionPolicyを書き換えるSOURCE使用範囲METHOD
@Retention(value)は、アノテーションタイプのアノテーションがどのくらい保持されるかを示します.デフォルトはRetentionPolicyです.CLASS.(CLASS RUNTIME SOURCE 3種)@Target(value)パッケージ,注釈,クラス,構築方法,フィールド,方法,方法のパラメータおよびローカル変数.任意の要素にデフォルト設定
MetaAnnotation annotationAttr() default @MetaAnnotation("xxxx"); @MyAnnotation(annotationAttr=@MetaAnnotation("yyyy"))は、上記@MyAnnotationがMyAnnotationクラスのインスタンスオブジェクトであると考えることができ、同様に、上記@MetaAnnotationはMetaAnnotationクラスのインスタンスオブジェクトであると考えることができ、呼び出しコードは以下の通りである:MetaAnnotation ma=myAnnotation.annotationAttr(); System.out.println(ma.value());
@MetaAnnotation("xxxx")注釈のインスタンスを作成
--------androidトレーニング、javaトレーニング、ご交流をお待ちしております!--------
注記Annotation
1つの注釈はクラスであり、注釈を使用するとこの注釈を使用するオブジェクトになります.注釈はタグに相当し、javacコンパイラ、開発ツール、その他のプログラムは反射で注釈を取得することができます.注記は、パッケージ、クラス、フィールド、メソッド、メソッドのパラメータ、およびローカル変数に追加できます.
java.langパッケージの3つの基本的な注記:
@SupressWarnings("deprecation")/注記、圧縮警告RetentionPolicy.SOURCE@Deprecated//時代遅れRetentionPolicy.RUNTIME@Override//RetentionPolicyを書き換えるSOURCE使用範囲METHOD
java.lang.annotation注記パッケージ
@Retention(value)は、アノテーションタイプのアノテーションがどのくらい保持されるかを示します.デフォルトはRetentionPolicyです.CLASS.(CLASS RUNTIME SOURCE 3種)@Target(value)パッケージ,注釈,クラス,構築方法,フィールド,方法,方法のパラメータおよびローカル変数.任意の要素にデフォルト設定
コードから注釈の応用を学ぶ:
1、カスタム注記ItcastAnnotation
@Retention(RetentionPolicy.RUNTIME) //
@Target({ElementType.METHOD,ElementType.TYPE}) // ,
public @interface ItcastAnnotation {
String color() default "blue";
String value();// Vlaue()
int[] arrayAttr() default {3,4,4};
EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;
MetaAnnotation annotationAttr() default @MetaAnnotation("lhm");
}
注記タイプのプロパティ:
MetaAnnotation annotationAttr() default @MetaAnnotation("xxxx"); @MyAnnotation(annotationAttr=@MetaAnnotation("yyyy"))は、上記@MyAnnotationがMyAnnotationクラスのインスタンスオブジェクトであると考えることができ、同様に、上記@MetaAnnotationはMetaAnnotationクラスのインスタンスオブジェクトであると考えることができ、呼び出しコードは以下の通りである:MetaAnnotation ma=myAnnotation.annotationAttr(); System.out.println(ma.value());
@MetaAnnotation("xxxx")注釈のインスタンスを作成
注釈の定義MetaAnnotation
public @interface MetaAnnotation {
String value();
}
注記のテストAnnotationTestクラス
@ItcastAnnotation(annotationAttr=@MetaAnnotation("flx"),color="red",value="abc",arrayAttr=1) // ,
public class AnnotationTest {
@SuppressWarnings("deprecation")
@ItcastAnnotation("xyz") // value , value
//( value ), value= , :@MyAnnotation("lhm")。
public static void main(String[] args) throws Exception{
System.runFinalizersOnExit(true);
//
if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
ItcastAnnotation annotation = (ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
System.out.println(annotation.color());
System.out.println(annotation.value());
System.out.println(annotation.arrayAttr().length);
System.out.println(annotation.lamp().nextLamp().name());
System.out.println(annotation.annotationAttr().value());
}
Method mainMethod = AnnotationTest.class.getMethod("main", String[].class);
ItcastAnnotation annotation2 = (ItcastAnnotation)mainMethod.getAnnotation(ItcastAnnotation.class);
System.out.println(annotation2.value());
}
@Deprecated
public static void sayHello(){
System.out.println("hi, ");
}
}
--------androidトレーニング、javaトレーニング、ご交流をお待ちしております!--------