Java注解
注解(Annotation),也叫元數(shù)據(jù)你稚。一種代碼級別的說明瓷耙。它是JDK1.5及以后版本引入的一個(gè)特性,與類刁赖、接口搁痛、枚舉是在同一個(gè)層次。它可以聲明在包宇弛、類鸡典、字段、方法枪芒、局部變量彻况、方法參數(shù)等的前面谁尸,用來對這些元素進(jìn)行說明,注釋疗垛。
目錄結(jié)構(gòu)
image.png
自定義注解:
Demo:
package annotationdemo;
import java.lang.annotation.*;
/**
* @author Sandy
* @version AnnotationTest.java, v 0.1 2018-04-26 下午3:32
*/
@Inherited
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DocumentA{
}
package annotationdemo;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DocumentB{
}
package annotationdemo;
/**
* @author Sandy
* @version A.java, v 0.1 2018-04-26 下午5:30
*/
@DocumentA
public class A {
}
package annotationdemo;
/**
* @author Sandy
* @version B.java, v 0.1 2018-04-26 下午5:31
*/
public class B extends A{
}
package annotationdemo;
/**
* @author Sandy
* @version C.java, v 0.1 2018-04-26 下午5:31
*/
@DocumentB
public class C {
}
package annotationdemo;
/**
* @author Sandy
* @version D.java, v 0.1 2018-04-26 下午5:32
*/
public class D extends C {
}
package annotationdemo;
import java.util.Arrays;
public class AnnotationTest {
public static void main(String[] args) {
A instanceA = new B();
System.out.println("已使用的@Inherited注解: "+ Arrays.toString(instanceA.getClass().getAnnotations()));
C instanceC = new D();
System.out.println("沒有使用的@Inherited注解: "+ Arrays.toString(instanceC.getClass().getAnnotations()));
}
}
輸出:
image.png