
编译期注解学习
lidongxiu0714
https://github.com/hpuzzuldx/
展开
-
编译时注解学习一之 Element元素
前面的文章学习[java基础之注解](https://blog.youkuaiyun.com/u010126792/article/details/83022093),掌握了注解的基本用法。使用系统或者大神写的框架库提供给我们注解,可以省略好多配置,特别是java Spring开发中注解更是多的眼花缭乱。最近需要用到编译时注解,所以就对AbstractProcessor进行深入的学习,首先对javax.la...原创 2019-07-12 14:10:47 · 4070 阅读 · 0 评论 -
编译期注解学习六- 生成java文件javapoet
1 生成文件方式编译期注解通过读取注解,然后处理注解字段,最终的目的是在编译代码之前生成所需文件。生成文件的方式有多种,例如StringBuilder进行拼接,模板文件进行字段替换,javaPoet 生成。StringBuilder进行拼接,模板文件进行字段替换进行简单文件生成还好,如果是复杂文件,拼接起来会相当复杂如下所示: private String brewCode(String...原创 2019-07-29 15:13:50 · 2489 阅读 · 0 评论 -
编译时注解学习二之 注解处理器初探AbstractProcessor
1注解处理器介绍使用注解可以方便开发,因为编译期注解处理器会根据注解自动帮使用者完成很多重复性操作。什么叫编译期注解呢,编译期注解是只在编译期有效的注解,注解处理器根据注解会帮我们生成操作所需的工具类,完成相应操作。类似的框架有黄油刀,EventBus3等。注解处理器Annotation Processor会在编译项目时获取相应的注解,APT(Annotation Process Tool),...原创 2019-07-21 11:25:55 · 3865 阅读 · 0 评论 -
编译时注解学习三之 注解处理器AbstractProcessor工具和Element属性简述
1 如何读取build.gradle配置的常量配置,读取:@SupportedOptions({"CLASSNAME"})@SupportedAnnotationTypes("com.ldx.annotationlib.BindView")@SupportedSourceVersion(SourceVersion.RELEASE_7)//@AutoService(Processor.cl...原创 2019-07-21 14:29:29 · 3291 阅读 · 0 评论 -
编译期注解学习四 简单的view注入框架
1 项目结构本篇文章比较简单,如果熟悉apt的同学就不用看了,只是作为入门级功能。经过前三篇的讲解,今天做一个简易版的View注入框架,功能类似黄油刀ButterKnife中的一小部分功能,Activity中view通过注解获取实例。项目结构:processor_lib是一个java lib 项目,实现processor。annotationlib 注解。injectlib 供用户调...原创 2019-07-25 19:56:19 · 1606 阅读 · 0 评论 -
编译期注解学习七-如何进行调试
1 编译期注解调试步骤编译普通程序,只需要直接点击“app”就能够完成编译,调试更是简单,直接点击debug build或者attach to process 就可以开始调试。注解处理器Processor在编译期执行的,此时还没有app的进程,那么如何把调试器attach到编译期间的进程上,只能通过远程调试,远程调试可以把调试器attach到任意时期的进程上。1.1新建远程调试如下图所示,...原创 2019-08-01 09:36:03 · 2218 阅读 · 1 评论 -
编译期注解学习五 - ElementKind,TypeKind,不同Element类型判断
1 ElementKind如何判断Element的类型呢,需要用到ElementKind,ElementKind为元素的类型,元素的类型判断不需要用instanceof去判断,而应该通过getKind()去判断对应的类型类型 说明PACKAGE 包ENUM 枚举CLASS 类ANNOTATION_TYPE 注解INTERFACE 接口ENUM_CONSTANT 枚举常量FIELD...原创 2019-07-28 11:36:56 · 2969 阅读 · 0 评论 -
编译时注解学习八 -模板文件读取
补充一个读取模板文件生成类的方法过程。模板文件内容:package %package%;public class %classname% { private String name; private int data; private void setName(String name){ this.name = name; } ...原创 2019-08-01 19:42:28 · 1037 阅读 · 1 评论