作家
登录

Android如何编写基于编译时注解的项目

作者: 来源: 2017-05-26 14:06:10 阅读 我要评论

" = "); 
  •         builder.append("("+type+")(((android.app.Activity)object).findViewById("+id+"));"); 
  •         builder.append("\n}\n").append("else").append("\n{\n"); 
  •         builder.append("host."+name).append(" = "); 
  •         builder.append("("+type+")(((android.view.View)object).findViewById("+id+"));"); 
  •         builder.append("\n}\n"); 
  •     } 
  •     builder.append("\n}\n"); 
  • 这里重要就是靠收集到的信息,拼接完成的代劳类对象了,看起来会比较头疼,不过我给出一个生成后的代码,比较着看会很多。

    1. package com.zhy.ioc_sample; 
    2. import com.zhy.ioc.*; 
    3. public class MainActivity$$ViewInjector implements ViewInjector<com.zhy.ioc_sample.MainActivity>{ 
    4.     @Override 
    5.     public void inject(com.zhy.sample.MainActivity host , Object object ){ 
    6.         if(object instanceof android.app.Activity){ 
    7.             host.mTv = (android.widget.TextView)(((android.app.Activity)object).findViewById(2131492945)); 
    8.         } 
    9.         else
    10.             host.mTv = (android.widget.TextView)(((android.view.View)object).findViewById(2131492945)); 
    11.         } 
    12.     } 

    这里留意下,生成的代码实现了一个接口ViewInjector,该接口是为了同一所有的代劳类对象的类型,到时刻我们须要强转代劳类对象为该接口类型,调用其办法;接口是泛型,重要就是传入实际类对象,例如MainActivity,因为我们在生成代劳类中的代码,实际上就是实际类.成员变量的方法进行拜访,所以,应用编译时注解的成员变量一般都不许可private润饰符润饰(有的许可,然则须要供给getter,setter拜访办法)。

    这里采取了完全拼接的方法编写Java代码,你也可以应用一些开源库,来经由过程Java api的方法来生成代码,例如:javapoet.

    1. A Java API for generating .java source files. 

    到这里我们就完成了代劳类的生成,这里任何的注解处理器的编写方法根本都遵守着收集信息、生成代劳类的步调。

    五、API模块的实现

    1. //Activity中 
    2.  Ioc.inject(Activity); 
    3.  //Fragment中,获取ViewHolder中 
    4.  Ioc.inject(this, view); 

    模仿了butterknife,第一个参数为宿主对象,第二个参数为实际调用findViewById的对象;当然在Actiivty中,两个参数就一样了。

    API一般若何编写呢?

    有了代劳类之后,我们一般还会供给API供用户去拜访,例如本例的拜访人口是

    其实很简单,只要你懂得了其道理,这个API就干两件事:


      推荐阅读

      Python算法实战系列:栈

    栈(stack)又称之为客栈是一个特别的有序表,其插入和删除操作都在栈顶进行操作,并且按照先辈后出,落后先出的规矩进交运作。如下图所示例如枪的弹匣,第一颗放进弹匣的枪弹反而在发射出去>>>详细阅读


    本文标题:Android如何编写基于编译时注解的项目

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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