现在android项目中使用注解提高开发效率的例子越来越多了,下面三个比较热门的开源库都用了注解简化代码:
Retrofit 使用Annotation实现符合 RESTful 规范的网络请求框架
Butter Knife 使用Annotation实现 View 及事件等依赖注入框架
Active Android 使用Annotation实现 ORM 框架
我在学习Annotation的过程中遇到了一些困惑,千辛万苦才搞清楚原因,就记在这里吧。
1、对AbstractProcessor的误解
当我们解析自己定义的Annotation,需要做的
a. 自定义类继承自 AbstractProcessor
b. 重写其中的 process 函数
其中AbstractProcessor是Javax包提供的抽象类,我们定义的processor由编译器自动调用,解析工作在重写的process函数中执行。在这一步我发现android sdk的Javax包并没有包含AbstractProcessor,当时百思不得其解,直到在stackoverflow找到这个提问Android Studio Annotation AbstractProcessor Not Found 。
造成困惑的原因还是对程序的编译打包理解不够透彻,因为AbstractProcessor只需要在编译时使用,而我们的应用在android系统是直接可以运行的,所以运行环境里当然不需要AbstractProcessor。