最近学了很多Annotation相关,AndroidAnnotation、AspectJ、Lombok等,先整理下。
AndroidAnnotation:
AndroidAnnotation提供大量注解来减少重复代码的编写,例如@ViewById 相当于findViewById。实现原理的话,在编译过程中底层使用了JavaPoet来生成相关类来代替原先的类。文档和如何配置github上面都有
github地址:https://github.com/androidannotations/androidannotations
AspectJ:
AspectJ更像一个新的编程方式,AspectJ的使用方式叫AOP,面向切面编程,AspectJ有自己的一套编译系统,对注释处理在编译或加载阶段,生成静态代理相关类来处理逻辑。
官网:http://www.eclipse.org/aspectj/
Lombok相关:
Lombok是一个通过注解来减少重复代码的库,提供@Getter @Setter之类,看起来和AndroidAnnotation相似,只能说目的相近,Lombok更偏向Java和Java语言的扩展,实现原理是直接操作AST(编译过程中的语法树),所以看不到他生成的代码,却能调用生成的方法。
基础知识,java编译过程:http://openjdk.java.net/groups/compiler/doc/compilation-overview/index.html
官网:https://www.projectlombok.org/
github:https://github.com/rzwitserloot/lombok
其他 Lombok相关:https://www.ibm.com/developerworks/cn/java/j-lombok/?ca=drs- https://blog.mythsman.com/2017/12/19/1/