作家
登录

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

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

 sets; 
  •     } 
  •  
  •     //指定Java版本,一般返回最新版本即可 
  •     @Override 
  •     public SourceVersion getSupportedSourceVersion() { 
  •         return SourceVersion.latestSupported(); 
  •     } 
  •  
  • 起首,我们梳理下一般处理器处理逻辑:

    1. 遍历获得源铝闼楝须要解析的元素列表。
    2. 断定元素是否可见和相符请求。
    3. 组织数据构造获得输出类参数。
    4. 输入生成java文件。
    5. 缺点处理。

    然后,让我们懂得一个概念:Element,因为它是我们获取注解的基本。

    Processor处理过程中,会扫描全部Java源码,代码的每一个部分都是一个特定类型的Element,它们像是XML一层的层级机构,比如类、变量、办法等,每个Element代表一个静态的、说话级其余构件,如下方代码所示。

    是不是很熟悉,有点ButterKnife的味道?当然,ButterKnife比这个高等多,毕竟反射多了影响效力,不过我们明白了,可以经由过程注解来注入和创建对象,如许可以在必定程度节俭代码量。

    作为Android开辟中熟知的注解,Override只是注解的一种表现,更多时刻,注解还有以下感化:

    • 降低项目标耦合度。
    • 主动完成一些规律性的代码。
    • 主动生成java代码,减轻开辟者的工作量。

    个中,Element代表的是源代码,而TypeElement代表的是源代码中的类型元素,例如类。然而,TypeElement并不包含类本身的信息。你可以大年夜TypeElement中获取类的名字,然则你获取不到类的信息,例如它的父类。这种信息须要经由过程TypeMirror获取。你可以经由过程调用elements.asType()获取元素的TypeMirror。

    1、知道了Element,我们就可以经由过程process 中的RoundEnvironment去获取,扫描到的所有元素,如下图X2.4,经由过程env.getElementsAnnotatedWith,我们可以获取被@BindView注解的元素的列表,个中validateElement校验元素是否可用。

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

    1. package android.demo; // PackageElement  
    2. // TypeElement 
    3. public class DemoClass {  
    4.     // VariableElement 
    5.     private boolean mVariableType;  
    6.     // VariableElement 
    7.     private VariableClassE m VariableClassE;  
    8.     // ExecuteableElement 
    9.     public DemoClass () { 
    10.     }  
    11.     // ExecuteableElement 
    12.     public void resolveData (Demo data   //TypeElement ) { 
    13.     } 

    2、因为env.getElementsAnnotatedWith返回的,是所有被注解了@ BindView的元素的列表。所以有时刻我们还须要走一些额外的断定,比如,检查这些Element是否是一个类:

    1. @Override 
    2.   public boolean process(Set<? extends TypeElement> an, RoundEnvironment env) { 
    3.     for (Element e : env.getElementsAnnotatedWith(BindView.class)) { 
    4.       // 检查元素是否是一个类 
    5.       if (ae.getKind() != ElementKind.CLASS) { 
    6.             ... 
    7.       } 

        推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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