3、javapoet (com.squareup:javapoet)是一个根据指定参数,生成java文件的开源库,有兴趣懂得javapoet的可以看下javapoet——让你大年夜反复无聊的代码中解放出来,在处理器中,按照参数创建出 JavaFile之后,通Filer应用javaFile.writeTo(filer);就可以生成你须要的java文件。
4、缺点处理,在处理器中,我们不克不及直接抛出一个异常,因为在process()中抛出一个异常,会导致运行注解处理器的JVM崩溃,导致跟踪栈信息十分纷乱。是以,注解处理器就有一个Messager类,一般经由过程messager.printMessage( Diagnostic.Kind.ERROR, StringMessage, element)即可正常输掉足误信息。
至此,你的注解处理器完成了所有的逻辑。可以看出,编译时注解实袈溱编译时生成java文件,然后将临盆的java文件注入到源铝闼楝在运行时并不会像运行时注解一样,影响效力和资本。
如下方代码,注解类@AInherited声清楚明了Inherited ,而注解BNotInherited 没有,地点在它们的润饰下:
- 类Child持续了父类Parent的@AInherited,不持续@BNotInherited;
- 重写的办法testOverride()不持续Parent的任何注解;
- testNotOverride()因为没有被重写,所以注解依然生效。
总结
我们就应用ButterKnife的流程,简单举例做个总结吧。
- @BindView在编译时,根据Acitvity临盆了XXXActivity$$ViewBinder.java。
- Activity中调用的ButterKnife.bind(this);,经由过程this的类名字,加$$ViewBinder,反射获得了ViewBinder,和编译处理器临盆的java文件接洽关系起来了,并将其存在map中缓存,然后调用ViewBinder.bind()。
- 在ViewBinder的bind办法中,经由过程id,应用ButterKnife的butterknife.internal.Utils对象类中的封装办法,将findViewById()控件注入到Activity的参数中。
好了,经由过程膳绫擎的流程,是不是把编译时注解的生成和应用连接起来了呢?有问题还请各位留言谈论。
【编辑推荐】
- 给Android开辟者的31个Pro 版进阶小贴士
- Google颁布I/O 2017 for Android的源代码
- Android字体修改,所有的细节都在这里 | 开篇
- Android中以粗暴的方法调换全局字体
- Android 若何用 Vim 进步开辟效力
推荐阅读
人工智能的将来到底应当是什么样的?它应当朝着什么偏向成长?在成长的过程中应当留意什么?这些都是每一个存眷科技成长的人在思虑的问题。比来,O'Reilly Media 开创人兼 CEO Tim O'Reil>>>详细阅读
本文标题:Android注解快速入门和实用解析
地址:http://www.17bianji.com/lsqh/37700.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示