注解的定义与注解解析

注解的注解就是为注解本身提供额外的信息,从而约束或增强注解的能力。其中包含有 @Documented 、 @Inherited 、 @Target 、 Retention 4种注解。 @Target注解 :用于约束被描述的注解的使用范围,当被描述的注解超出使用范围则编译失败。 // 约束@MyAnnotation的作用范围是函数和构造函数 @Target(ElementType.METHOD, ElementType.CONSTRUCTOR) public @interface MyAnnotation{} @Retention注解 :用于约束被描述的注解的作用范围,注解的作用范围有三个,分别为 1. RetentionPolicy.SOURCE ,作用范围为源码,就是仅存在于java文件中,当执行 javac 命令时将会去除该注解。

2. RetentionPolicy.CLASS ,作用范围为二进制码,就是存在于class文件中,当执行 java 命令时会去除该注解。

3. RetentionPolicy.RUNTIME ,作用范围为运行时,就是我们可以通过反射动态获取该注解。 @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation{} @Documented注解 :用于指定javadoc生成API文档时显示该注解信息 @Inherited注解 :用于指定被描述的注解可以被其所描述的类的子类继承。默认情况 // 默认注解不会被子类继承 @MyAnnotation public class Parent{} // Son并没有继承注解MyAnnotation public class Son extends Parent{} 通过 @Inherited 子类将会继承父类的 @MyAnnoation注解 。

四、读取注解 通过反射我们可以获取类、函数等上的注解信息。 复制代码 @Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.CLASS)

@Documented public @interface MyAnnotaion{ String value() default "hello world"; } @MyAnnotation public class Test{ public static void main(String[] args){

MyAnnotation ma = Test.class.getAnnotation(MyAnnotation.class);

System.out.println(ma.value());

// 获取自身和从父类继承的注解

Annotation[] annotations = Test.class.getAnnotations();

// 仅获取自身的注解

Annotation[] annotations = Test.class.getDeclaredAnnotations(); } }

转载于:https://my.oschina.net/u/2851681/blog/743081

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值