第二阶段课前准备 | 青训营笔记

119 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第5天

今天对青训营第二阶段的课程进行课前准备学习,了解Android注解相关知识。

注解(Annotation)

概念

  • JDK5新增加的功能

  • 是源代码的元数据,即描述数据的数据。

  • 对程序信息的一种补充标记——添加在类、变量、方法、参数等前面的一个修饰符

  • 可以在某个生命周期中(java源码、编译期、Runtime)被反射获取

  • 本质上是一个特殊的接口,接口里面定义的方法就是注解的属性

  • 单独使用注解没有任何意义,需要配合程序来使用。

  • 不会改变编译器的编译方式,也不会改变虚拟机指令执行的顺序

原理

使用interface来用作标记,@Target来用作描述类型(包括类、成员变量、方法等),@Retention来描述生命周期等等。其内部是通过类的反射机制,调用指定对象的方法,从而达到与对象直接调用方法相同的效果。

元注解

annotation提供了五种元注解:@Retention、@Target、@Inherited、@Documented、@Repeatable

  1. @Retention :注解的生命周期,就是注解存活的时间
  2. @Target :表示注解对象的作用范围,如类,方法,变量等等
  3. @Inherited :允许子类继承父类中的注解,默认为false
  4. @Documented :代表着此注解的元素会被javadoc工具提取成文档
  5. @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博客

结语

以上内容仅供参考,如有错误欢迎指正,共同学习进步🙂🙂🙂