概念:Annotation注解,是一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、 枚举是在同一个层次。注解就是告诉程序,我所修饰的代码是如何执行的。
注解的作用:
编译检查:通过代码里标识注解,让编译器能够实现基本的编译检查。如@Override。
代码分析:通过代码里标识注解,对代码进行分析,从而达到取代XML的目的。
编写文档:通过代码里标识注解,辅助生成帮助文档对应的内容。
@Override:标记方法重写,只能标记在方法上。
标记父类的重写(JDK5.0),标记接口方法的实现重写(JDK6.0).
@SuppressWarning:压制警告,可以标记方法、变量、类上。
会在程序的源码-预编译阶段进行警告的压制,一般使用:@SuppressWarning("all")
使用:
开发时,将所有警告压制,防止被警告打断开发思路。
测试时,将压制警告去掉,警告机制开启,这样方便测试。
@Deprecated:标记方法过时,过时方法存在安全问题。
会在程序的源码-预编译阶段开始起作用。告知程序我的方法是过时的,如果有程序员调用这样过时的方 法,会报过时的警告。即使调用了过时方法,过时方法也正常执行。
注解本质:注解本质是一个接口(查看源码)
注解的属性赋值:
属性的类型:基本、String类型、Class类型、枚举类型、注解类型、数组
注解的赋值特殊情况:
如果注解中,只有一个属性,并且名字叫value,赋值可以忽略属性名,即 @MyTest("aaa")。
属性如果没有默认值,使用时必须赋值。
赋予默认值,使用是就不用赋值了;如果赋值,就会覆盖默认值。如 String value() default "vip";
自定义注解步骤:
1、定义注解:
图666666
2、使用注解:
图666666
3、程序解析,并执行注解:写反射代码
图666666
4、要想使用isAnnotationPresent 必须规定注解是在运行阶段起作用
以下两个专门修饰注解的元注解:
@Target({TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
@Target 规定注解能够修饰在那个地方 ,一般都是Method,非必须项
@Retention 规定注解在哪个阶段起作用 ,一般都是RetentionPolicy.RUNTIME,必须规定的强制
图666666
待续……