Java注解(一)
2018-04-26 本文已影响0人
Sandy_678f
Java注解
注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
目录结构
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