美文网首页Android 组件化、插件化
程序员自我修养之APT篇

程序员自我修养之APT篇

作者: 巴菲伟 | 来源:发表于2021-03-22 22:12 被阅读0次

    一、APT作用的范围以及缺点:

        APT = 注解 + 注解处理器(AbstractProcessor)

        作用范围:基于java文件去修改为java文件

        缺点:生成新的文件需要去使用,代码具有侵略性    

     二、注解的类型以及应用    

            Source :    APT ------>编译时注解处理器

            Class :      插桩 ------->编译后处理筛选

            Runtime :  反射-------->运行时动态获取注解信息

    三、常见注解器的使用

    SupportedAnnotationTypes : 用来过滤处理哪种注解

        在builde.gradle里面加上这句话

        annotationProcessor  project('') ----->这个是倒入你写的那个包

        annotationProcessor project('存储路径')

    SupportedOptions:这个是再编译时可以动态去获取参数

        在builde.gradle里面加上这句话

       javaCompileOptions.annotationProcessorOptions.arguments = [module : project.getName() ]

        然后代码里processingEnvironment.getOptions().get("module") 可以动态获取

    SupportedSourceVersion :支持编译的版本

    四、Element常用元素以及API的接口

    APT的Element元素常用变量

    五、APT常用API的方法

    拿到当前的Element可以拿到它的下一个,直到为ExecuteableElement或VariableElement止

    对getEnclosedElements() :Package(包)->Type(类)->{Variable(属性)、Executeable(方法)}

    拿到当前的Element可以拿到它的上一个,直到为PackageElement止

    对getEnclosingElement()  : {Executeable(方法)、Variable(属性)}->Type(类)->Package(包)

    java类的结构顺序图

    六、APT实现Activity、Fragment、Dialog实现数据绑定

        这个注解是向Javac里面注册自己定义的注解

        import javax.annotation.processing.Processor;

        @AutoService(Processor.class)

    网址:https://www.jianshu.com/p/899063e8452e 或者去参考java的注解文档

    七、APT优化方案

    获取生成类的方式

     执行iRouter.putActivity这个方法,说明key("likeActivity") -- value(LikeActivity) 映射成功

    相关文章

      网友评论

        本文标题:程序员自我修养之APT篇

        本文链接:https://www.haomeiwen.com/subject/yzmthltx.html