ベース補強_注記Annotation


--------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トレーニング、ご交流をお待ちしております!--------