现在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。