一.为什么要使用注解
1.方便看开源的框架。因为很多框架上都使用了注解。
2.方便简化代码,让自己也能写出方便的框架,这是成为架构师的基础。
二、注解的定义和使用
1.注解的定义:是JDK1.5引入的一种注释机制,对注解后的代码操作没有直接影响。
2.注解的使用:
只有注解定义好后方可以使用,可以同等理解调用java类方法相似。所以要先定义后使用。
1)注解基本定义
@Target(ElementType.TYPE) //此处表示元注解将用于类上,当然也可配置方法,属性中。
@Retention(RetentionPolicy.SOURCE) //此处表示元iukj注解会保留在源码阶段上,当然也可配置为class,runtime时
public @interface Lance {
String value();
}
说明:
ElementType 取值有:
1.CONSTRUCTOR:用于描述构造器
2.FIELD:用于描述域
3.LOCAL_VARIABLE:用于描述局部变量
4.METHOD:用于描述方法
5.PACKAGE:用于描述包
6.PARAMETER:用于描述参数
7.TYPE:用于描述类、接口(包括注解类型) 或enum声明
RetentionPolicy 取值有:
1.SOURCE:注解保留源码阶段
3.CLASS:注解保留编译后CLASS文件
4.RUNTIME:注解保留运行时状态
2)注解基本使用
@Lance("main类") public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
3)小知识点:
注解的应用场景:
级别 | 技术 | 说明 |
源码 | APT,语法检查(比如录入参数提示) | 在编译器能够获取注解与注解声明的类包括类中所有成员信息,一般用于生成额外的辅助类 |
字节码 | 字节码增强 | 在编译出Class类后,通过修改Class数据以实现修改代码逻辑目的。对于是否需要修改的区分或者要修改为不同逻辑的判断可以使用注解 |
运行时 | 反射 | 在程序运行期间,通过反射技术动态获取注解与其元素,从而完成不同的逻辑判定。 |