作家
登录

Android注解快速入门和实用解析

作者: 来源: 2017-10-07 13:47:02 阅读 我要评论

  •    } 
  •    ... 
  • 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的流程,简单举例做个总结吧。

    1. @BindView在编译时,根据Acitvity临盆了XXXActivity$$ViewBinder.java。
    2. Activity中调用的ButterKnife.bind(this);,经由过程this的类名字,加$$ViewBinder,反射获得了ViewBinder,和编译处理器临盆的java文件接洽关系起来了,并将其存在map中缓存,然后调用ViewBinder.bind()。
    3. 在ViewBinder的bind办法中,经由过程id,应用ButterKnife的butterknife.internal.Utils对象类中的封装办法,将findViewById()控件注入到Activity的参数中。

    好了,经由过程膳绫擎的流程,是不是把编译时注解的生成和应用连接起来了呢?有问题还请各位留言谈论。

    【编辑推荐】

    1. 给Android开辟者的31个Pro 版进阶小贴士
    2. Google颁布I/O 2017 for Android的源代码
    3. Android字体修改,所有的细节都在这里 | 开篇
    4. Android中以粗暴的方法调换全局字体
    5. Android 若何用 Vim 进步开辟效力
    【义务编辑:未丽燕 TEL:(010)68476606】

      推荐阅读

      微软CEO纳德拉访谈:人工智能的大方向与未来是什么?

    人工智能的将来到底应当是什么样的?它应当朝着什么偏向成长?在成长的过程中应当留意什么?这些都是每一个存眷科技成长的人在思虑的问题。比来,O'Reilly Media 开创人兼 CEO Tim O'Reil>>>详细阅读


    本文标题:Android注解快速入门和实用解析

    地址:http://www.17bianji.com/lsqh/37700.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)