JavaPoet APT(一) 写架构思想

作者: zcwfeng | 来源:发表于2020-11-17 18:03 被阅读0次

    我们大致梳理下,下载的编译期框架,都有下面这些,不全但比较有名

    • Dagger2
    • Room
    • ARouter ------JavaPoet 生成
    • ButterKnife
    • EventBus ------ 传统方式一行一行生成

    了解APT是什么?

    APT(Annotation Processing Tool)

    是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,根据注解自动生成代码, 如果想要自定义的注解处理器能够正常运行,必须要通过APT工具来进行处理。 也可以这样理解,只有通过声明APT工具后,程序在编译期间自定义注解解释器才能执行。

    通俗理解:根据规则,帮我们生成代码、生成类文件

    APT中用到的重要元素

    PackageElement
    表示一个包程序元素。提供对有关包及其成员的信息的访问
    ExecutableElement
    表示某个类或接口的方法、构造方法或初始化程序(静态或实例)
    TypeElement
    表示一个类或接口程序元素。提供对有关类型及其成员的信息的访问。
    VariableElement
    表示一个字段、enum 常量、方法或构造方法参数、局部变量或异常参数

    APT中用到API

    属性名 描述
    getEnclosedElements() 返回该元素直接包含的子元素
    getEnclosingElement() 返回包含该element的父element,与上一个方法相反
    getKind() 返回element的类型,判断是哪种element
    getModifiers() 获取修饰关键字,入public static final等关键字
    getSimpleName() 获取名字,不带包名
    getQualifiedName() 获取全名,如果是类的话,包含完整的包名路径
    getParameters() 获取方法的参数元素,每个元素是一个VariableElement
    getReturnType() 获取方法元素的返回值
    getConstantValue() 如果属性变量被final修饰,则可以使用该方法获取它的值

    工作原理
    APT 编译的时候 ---> 处理注解
    APT 传统方式 ---> 生成 java文件
    APT JavaPoet方式 --> 生成Java文件

    传统方式 那些 开源项目有用到?

    类似EventBus源码就知道了
    传统方式:优点(编程的流程写下去) 缺点(没有oop思想加入进来)

    JavaPoet是什么?

    JavaPoet是square推出的开源java代码生成框架,提供Java Api生成.java源文件 这个框架功能非常实用,也是我们习惯的Java面向对象OOP语法 可以很方便的使用它根据注解生成对应代码
    通过这种自动化生成代码的方式, 可以让我们用更加简洁优雅的方式要替代繁琐冗杂的重复工作

    项目主页及源码:https://github.com/square/javapoet

    JavaPoet相关API

    类对象 说明
    MethodSpec 代表一个构造函数或方法声明
    TypeSpec 代表一个类,接口,或者枚举声明
    FieldSpec 代表一个成员变量,一个字段声明
    JavaFile 包含一个顶级类的Java文件
    ParameterSpec 用来创建参数
    AnnotationSpec 用来创建注解
    ClassName 用来包装一个类
    TypeName 类型,如在添加返回值类型是使用 TypeName.VOID
    $S 字符串,如:$S, ”hello”,
    $T 类、接口,如:$T, MainActivity

    JavaPoet到底是什么?

    oop思想方式:优点(加入oop思想) 缺点(不习惯,倒序)

    JavaPoet对比.png

    JavaPoet真的比传统方式好吗?

    并不是这样的,如果复杂的代码生成,反而效率低下.发展趋势,oop思想,真正的掌握JavaPoet,非常受用

    看下一般的模块思路

    架构大多数用到的套路.png

    arouter-annotation 存放所有的注解
    arouter-compiler 注解处理器,APT。服务,盯着整个项目,如果你在编译,我就知道

    相关文章

      网友评论

        本文标题:JavaPoet APT(一) 写架构思想

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