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(一) 写架构思想

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

  • apt相关文章

    1、JavaPoet的基本使用2、java annotation processing tools(APT)实例解...

  • Android组件化实现方案(二)

    APT(Annotation Processing Tool),根据注解自动给生成代码。JavaPoet,代码生成...

  • APT高级用法JavaPoet

    1、什么是JavaPoet JavaPort是square公司推出的开源java代码生成框架,提供Java API...

  • JavaPoet APT (二) 使用

    了解组件化的架构 组件化,业务组件横向是不能有依赖,也就是需要解决组件通信的问题,所以我们要用到路由,业务组件通过...

  • 代码诗人——APT && JavaPoet

    AOP 中, 我们以处理阶段为划分产生了很多可选的技术手段: java 源代码阶段 (apt 、 ksp、 jav...

  • APT学习笔记--JavaPoet

    简介 APT(Annotation Process Tool),是一种编译期间处理注解,按照一定规则生成代码的技术...

  • 从无到有手写ButterKnife框架

    导航 一、代码的演进二、butterKnife反射调用三、javapoet自动生成模板代码四、apt与注解五、注解...

  • Android APT:Eclipse下APT使用

    001概述 文章将介绍如何在eclipse下使用apt开发,结合JakeWharton大神的javapoet让ap...

  • 路由框架设计方案

    知识储备 apt、javapoet、反射、注解 方案一 借助于注解生成器,遍历所有项目中特定注解,然后借助java...

网友评论

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

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