注解Annotation
注解介绍
定义
注解annotation是Java语言中用于描述类,成员变量,构造方法,成员方法,方法参数及包声明的特殊的
修饰符
.用于描述这些信息的元数据.例如@Override用于描述一个方法是在子类中重写的方法
特点
是JDK5.0之后引入的特性.注解是以”@注解名”在代码中存在的
作用
创建文档
跟踪代码依赖性
执行编译时格式检查
代替已有的配置文件
分类
根据注解的参数个数分为三类:
标记注解:没有参数的注解,仅用自身的存在与否为程序提供信息,如@Override 注解,该注解没有参数,用于表示当前方法为重写方法
单值注解:只有一个参数的注解,如果该参数的名字为value,那么可以省略参数名,如@SuppressWarnings(“all”),可以简写为@SuppressWarnings(“all”).
完整注解:有多个参数的注解
根据注解的使用方法和用途分为三类:
JDK内置注解,JDK1.5之后内置了三个系统注解
@Override
标记在成员方法上,用于标识当前方法是重写父类方法,编译器在对该方法进行编译时会检查是否符合重写规则,如果不符合,编译报错
@Deprecated
用于标记当前类、成员变量、成员方法或者构造方法过时
如果开发者调用了被标记为过时的方法,编译器在编译期进行警告
@SuppressWarnings
可放置在类和方法上,该注解的作用是阻止编译器发出某些警告信息,该注解为单值注解,只有一个value参数,该参数为字符串数组类型,参数值常用的有
元注解
定义
用户负责描述其他注解的注解
在自定义注解时,需要指定注解可以应用在哪些位置(如:方法,参数,类上等)以及自定义注解的停留策略等信息,那么就可以通过元注解去描述这些信息了.
类型
JDK1.5中定义了四个元注解
@Target
作用:用于描述当前定义的注解可以应用的范围
该注解仅有一个属性value,该属性值为ElementType数组类型
ElementType为枚举类型,枚举值和作用说明如下:
@Retention
作用:用于描述当前定义的注解可以保留的时间长短
该注解只有一个value参数,参数类型为RetentionPolicy
RetentionPolicy类型为枚举类型
@Documented
作用:用于标示当前定义的注解可以被Javadoc文档生成器记录,默认情况下javadoc文档生成器生成的文档是不包含注解信息的,但是@Documented标示的注解可以被javadoc文档生成器识别,并且包含到生成的文档信息中
该注解是标示型注解,没有任何参数
@Inherited
作用:用于标示当前定义的注解应用到某一个父类上时,子类会将继承该注解
该注解是标示型注解,没有任何参数
同时如果为定义的注解指定了@Inherited修饰,那么这个自定的注解的@Target的参数值需要指定为TYPE
自定义注解
语法
注解定义语法
public @interface 注解名{注解体}
注解中参数定义语法
[public] 参数类型 参数名() [default 默认值];
定义注解参数注意事项
参数类型
8种基本数据类型byte short int long float double char boolean
String Class enum Annotation
以及上述类型的数组类型
参数只能使用public修饰,默认就会使用public修饰
如果只有一个参数,最好把参数名定义为value,这样使用该注解时可以更加简洁
参数可以使用default定义默认值,参数为引用类型时默认值不能为null
参数如果定义了默认值,在使用注解时可以不为其指定值,否则在使用该注解必须为该参数指定值
解析注解信息
JDK1.5后,java.lang.reflect报下新增了
AnnotatedElement
接口,该接口为运行时通过反射机制获取注解信息提供API,该接口中定义了如下四个方法
27万+

被折叠的 条评论
为什么被折叠?



