这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战」
前言
Java注解是用来对代码进行说明的,可以对包、类、接口、字段、方法参数、局部变量等进行注解,是学习框架必须要掌握的基础,参考文章下面开始学习。
基础
注解的主要作用按照上文的总结分为四个方面:
- 生成文档,可以通过代码里标识的元数据生成javadoc文档
- 编译检查,通过代码里标识的元数据让编译器在编译期间进行检查验证
- 编译时动态处理,编译时通过代码里标识的元数据进行动态处理
- 运行时动态处理,运行时通过代码里标识的元数据动态处理
这么看很抽象,结合具体的注解进一步理解如下:
Java自带的标准注解
例如:@Override 标明重写某个方法、@Deprecated 标明某个类或者方法过时、@SuppressWarnings 标明要忽略的警告。用这些注解标明后编译器会进行检查。
元注解
元注解是定义注解的注解,包括@Retention 用于标明注解被保留的阶段(被描述的注解在它所修饰的类中可以保留到什么时候)、@Target 用于标明注解使用的范围(被修饰的注解可以用在什么地方)、@Inherited 用于标明注解可继承、@Documented 用于标明是否生成javadoc文档(描述在使用javadoc工具为类生成帮助文档时是否要保留其注解信息)。
自定义注解
可以根据自己的需求定义注解,并可用元注解对自定义注解进行注解。
反射接口
定义注解后,可以通过反射包java.lang.reflect下的AnnotatedElement接口提供的一些方法获取注解中的内容。AnnotatedElement接口是所有程序元素(class、method、constructor)的父接口。所有程序通过反射获取了某个类的AnnotationElement对象之后,程序就可以调用该对象的方法来访问Annotation信息。例如:
boolean isAnnotationPresent(Class<?extends Annotation> annotationClass)
用来判断该程序元素上是否包含指定类型的注解,存在则返回true,否则返回false。
综述
在理解了内置注解、元注解和获取注解的反射接口后,就可以自定义注解了,下回再写例子~