Android中注解的使用

元注解

@Target:这个注解的取值是一个 ElementType 类型的数组,用来指定注解所使用的对象范围,总共有十种不同的类型,根据定义的注解进行灵活的组合,如下所示:

元素类型 适用于
ANNOTATION_TYPE 注解类型声明
CONSTRUCTOR 构造函数
FIELD 实例变量
LOCAL_VARIABLE 局部变量
METHOD 方法
PACKAGE
PARAMETER 方法参数或者构造方法参数
TYPE 类(包括ENUM)和接口(包含注解类型)
TYPE_PARAMETER 类型参数
TYPE_USE 类型的用途

同时支持多种类型的注解定义如下:

1
2
@Target({ElementType.TYPE,ElementType.PACKAGE})
public @interface CrashReport

@Retention:用来指明注解的访问范围,也就是在什么级别下保留注解,主要有下面三种类型:

  • 源码级注解(SOURCE):在定义注解接口时,使用@Retention(RetentionPolicy.SOURCE)修饰的注解,该类型的注解信息只保留在 .java 源码里,源码经过编译后,注解信息会被丢弃,不会保留在编译好的 .class 文件中。
  • 编译时注解(CLASS):在定义注解接口时,使用@Retention(RetentionPolicy.CLASS)修饰的注解,该类型的注解信息只保留在 .java 源码里和 .class 文件里,在执行的时候会被Java 虚拟机丢弃,不会加载到虚拟机里。
  • 运行时注解(RUNTIME):在定义注解接口时,使用@Retention(RetentionPolicy.CLASS)修饰的注解,Java 虚拟机在运行期间也保留注解信息,也可以通过反射机制读取注解的信息。( .java 源码、.class 文件和执行的时候都有注解的信息 )

@Documented:表示被修饰的注解应该被包含在被注解项的文档中(例如用JavaDoc生成的文档)。

@Inherited:表示该注解可以被子类继承的。

@Repeatable:表示这个注解可以在同一个项上面应用多次,不过这个注解是 Java8 中才引入的,前面的4个注解都是在 Java 5 中引入的。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×