这是我参与「第四届青训营 」笔记创作活动的第5天
今天对青训营第二阶段的课程进行课前准备学习,了解Android注解相关知识。
注解(Annotation)
概念
-
JDK5新增加的功能
-
是源代码的元数据,即描述数据的数据。
-
对程序信息的一种补充标记——添加在类、变量、方法、参数等前面的一个修饰符
-
可以在某个生命周期中(java源码、编译期、Runtime)被反射获取
-
本质上是一个特殊的接口,接口里面定义的方法就是注解的属性
-
单独使用注解没有任何意义,需要配合程序来使用。
-
不会改变编译器的编译方式,也不会改变虚拟机指令执行的顺序
原理
使用interface来用作标记,@Target来用作描述类型(包括类、成员变量、方法等),@Retention来描述生命周期等等。其内部是通过类的反射机制,调用指定对象的方法,从而达到与对象直接调用方法相同的效果。
元注解
annotation提供了五种元注解:@Retention、@Target、@Inherited、@Documented、@Repeatable
- @Retention :注解的生命周期,就是注解存活的时间
- @Target :表示注解对象的作用范围,如类,方法,变量等等
- @Inherited :允许子类继承父类中的注解,默认为false
- @Documented :代表着此注解的元素会被javadoc工具提取成文档
- @Repeatable : Java SE8引入的注解,表示这个注解可以在同一处多次声明
自定义注解
语法格式如下:
@Inherited
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface GET {
String value() default "";
}
- 通过@interface来定义注解
- 注解里面可以定义多个属性
- 属性可以设置返回值,但不能带有参数,返回值:数据的基本类型、String、
- 可以default设置一个默认值,当传入参数为空时将使用默认值
- 注解可以使用多个元注解,但每一个元注解只能选择一个参数,一个元注解多个参数是非法的!
作用
-
提供信息给编译器:编译器可以利用注解来探测错误和警告信息
-
编译阶段时的处理:软件工具可以利用注解信息来生成代码、Html文档或者做其它相应处理
-
运行时的处理:某些注解可以在程序运行的时候接受代码的提取
-
简化代码,使清晰简洁,增加阅读性,提高代码复用率,并提高开发效率,但不一定能提高运行效率
类型
Android注解有8种类型
- Nullness注解
- 资源注解
- 线程注解
- 值约束注解
- 权限注解
- CallSuper注解
- Typedef注解
- 可访问性注解
添加支持注解库依赖项及详解请见(22条消息) Android注解:Android 常用注解_探路者小斌的博客-CSDN博客
结语
以上内容仅供参考,如有错误欢迎指正,共同学习进步🙂🙂🙂