组件化之二

前言

有志者,事竟成

APT技术

APT是什么?

APT(Annotation Processing Tool)

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

APT中用到的重要元素

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

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

高级用法JavaPoet

JavaPoet是什么?

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

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

JavaPoet到底是什么?

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/40ce5147f9b34315a4b55d58b4a5690c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY2hhbl95YW5n,size_11,color_FFFFFF,t_70,g_se,x_16
JavaPoet真的比传统方式好吗?

答:并不是这样的,如果复杂的代码生成,反而效率低下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值