001概述
文章将介绍如何在eclipse下使用apt开发,结合JakeWharton大神的javapoet让apt开发飞起来。
002背景
栗子:同一个父类,子类继承完后,每次都要拷贝黏贴,然后重写,时间花得太不值(⊙o⊙)…
同样的还有创建{实体类}的时候,需要get、set,使用gson的时候还要@SerializedName("")等等都是比较花时间的。
003构建
① 创建一个Android工程(当然Java工程也是可以的),如图:
② 将JakeWharton大神的POET代码移植过来,在工程目录下创建META-INFO,如上图提示。
注意:javax.annotation.processing.Processor文件的内容是com.king.annotation.KingProcessor (KingProcessor extends AbstractProcessor),因为我们没有使用@AutoService(Processor.class)注解去自动生成 javax.annotation.processing.Processor,所以想让eclipse-apt识别到,就需要加入这个文件;大家不凡也可以去看JakeWharton大神的butterknife-7.0.1.jar包,其中也可以看到META-INFO文件夹,只是javax.annotation.processing.Processor的内容是大神自己的Processor。
③ 创建注解
这边只对Class作用所以,Retention就直接使用CLASS类型
④ 创建Processor(DHModelProcessor)
这个类是最重要的类了^_^,其中使用到JakeWharton大神的POET,对POET框架不了解的可以先去熟悉下:javapoet
下面一个个讲怎么拼凑:
// 获取所有被DHModel注解的元素
for (Element element : roundEnv.getElementsAnnotatedWith(DHModel.class)) {
DHModel model = element.getAnnotation(DHModel.class); -------------------------拿到注解对象
这里讲下需要注意的地方:
<1> 例如我需要拿到一个Class,那么我们需要使用 ClassName,例如取个activity类:
ClassName mActivityClassName = ClassName.get("android.app", "Activity"); // Activity类
<2> $T和$S要对应正确,不然会出错
<3> 巧用mMessager.printMessage(Diagnostic.Kind.ERROR, String.format(msg, args), e);来调试代码。
004打包
利用Eclipse---->export打jar包工具,生成jar包
注意:重新打包的时候不要使用覆盖的方式,否则jar包会出问题,怀疑是编译器的问题。
005加入jar包
加打完的jar包放入主工程libs目录中,然后如下图点击Add JARs添加jar包:
006万事俱备
005步骤完成后,使用@DHModel(注解)
最后重新编译工程,在你设置的包路径下会生成对应的代码:
007成果
最终会看到自动生成好了的文件