parent
2968ebbb18
commit
eb422fe576
@ -0,0 +1,75 @@ |
|||||||
|
--- |
||||||
|
注解 |
||||||
|
--- |
||||||
|
|
||||||
|
#### 目录 |
||||||
|
|
||||||
|
1. 思维导图 |
||||||
|
2. 定义 |
||||||
|
3. 元注解 |
||||||
|
4. 自定义注解 |
||||||
|
5. 参考 |
||||||
|
|
||||||
|
#### 思维导图 |
||||||
|
|
||||||
|
#### 定义 |
||||||
|
|
||||||
|
注解是 JDK 5 引入的,注解是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。 |
||||||
|
|
||||||
|
Annotation 不能运行,它只有成员变量,没有方法。Annotation 和 public、final 等修饰符一样,都是程序元素的一部分,Annotation 不能作为一个程序元素使用。 |
||||||
|
|
||||||
|
注解将一些本来重复性的工作,变成程序自动完成,简化和自动化该过程。比如用于生产 Java doc、自动代码生成等等。 |
||||||
|
|
||||||
|
#### 元注解 |
||||||
|
|
||||||
|
元注解可以理解为注解上的注解,有四个: |
||||||
|
|
||||||
|
- @Retention |
||||||
|
- @Target |
||||||
|
- @Inherited |
||||||
|
- @Documented |
||||||
|
|
||||||
|
##### @Retention |
||||||
|
|
||||||
|
定义该 Annotation 被保留的策略。 |
||||||
|
|
||||||
|
- RetentionPoicy.SOURCE |
||||||
|
|
||||||
|
注解只保留在源文件中,当 Java 文件被编译成 class 文件的时候,注解被遗弃。常用于做一些检查性的操作,比如 @Override、@SuppressWarnings 。 |
||||||
|
|
||||||
|
- RetentionPoicy.CLASS |
||||||
|
|
||||||
|
注解被保留在 class 文件,但 JVM 加载 class 文件时被遗弃,这是默认的生命周期。常用于在编译时进行一些预处理,比如生成一些辅助代码,例如 ButterKnife。 |
||||||
|
|
||||||
|
- RetentionPoicy.RUNTIME |
||||||
|
|
||||||
|
注解不仅被保存到 class 文件中,JVM 加载 class 文件之后,仍然存在。常用于在运行时动态获取注解信息,大多会与反射一起使用。 |
||||||
|
|
||||||
|
##### @Target |
||||||
|
|
||||||
|
定义了 Annotation 所修饰的对象范围。 |
||||||
|
|
||||||
|
- ElementType.CONSTRUCTOR 用于描述构造器 |
||||||
|
- ElementType.FIELD 用户描述域 |
||||||
|
- ElementType.LOCAL_VARIABLE 用于描述局部变量 |
||||||
|
- ElementType.METHOD 用于描述方法 |
||||||
|
- ElementType.PACKAGE 用于描述包 |
||||||
|
- ElementType.TYPE 用于描述类、接口或枚举 |
||||||
|
|
||||||
|
如果未标注,则表示可修饰所有。 |
||||||
|
|
||||||
|
##### @Inherited |
||||||
|
|
||||||
|
是否允许子类继承父类的注解,默认是 false。 |
||||||
|
|
||||||
|
##### @Documented |
||||||
|
|
||||||
|
是否会保存到 Javadoc 文档中。 |
||||||
|
|
||||||
|
#### 自定义注解 |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 参考 |
||||||
|
|
||||||
|
[浅谈Android下的注解](https://juejin.im/post/5b292b736fb9a00e8c4435f7) |
Loading…
Reference in new issue