Android组件化实战五: APT的高级用法JavaPoet

本文是Android组件化实战系列的第五篇,主要介绍了JavaPoet——一个由Square推出的Java代码生成框架。通过使用JavaPoet,开发者可以更方便地根据注解生成代码,避免了字符串拼接的繁琐,提高了代码生成的效率和准确性。文章详细讲解了JavaPoet的使用背景、基本概念、依赖配置、常用类以及核心原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 组件化实战一: Gradle基础语法
Android 组件化实战二: 项目部署
Android组件化实战三: 模块之间的交互
Android组件化实战四: APT的介绍与使用
Android组件化实战五: APT的高级用法JavaPoet
Android组件化实战六:路由架构设计

前言

上一篇文章简单介绍了APT及其使用,生成相应的java文件,帮我们执行相关的操作,生成java文件的方式是字符串拼接的方式,但是如果要生成的java文件成员属性和方法比较多,这种方式就比较麻烦了,而且容易出现人为失误。所有就有了API调用的方式生成java文件,也就是JavaPoet。

什么是JavaPoet

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

APT + JavaPoet = 超级利刃

JavaPoet是square推出的开源java代码生成框架,提供Java Api生成.java源文件,这个框架功能非常实用,也是我们习惯的Java面向对象OOP语法,可以很方便的使用它根据注解生成相应的代码,通过这种自动化生成代码的方式,可以让我们更加简洁优雅的方式要替代繁琐冗杂的重复工作(常规的通过继承注解处理器AbstractProcessor,根据注解生成java代码的时候,需要一行一行的进行字符串的拼接,如果生成java文件内容较多,实在是不优雅,可以说是不人性)。

结构体语言

Android Studio 3.4.2 + Gradle5.1.1 (向下兼容)

compileOnly ‘com.google.auto.service:auto-service:1.0-rc4’
annotationProcessor ‘com.google.auto.service:auto-service:1.0-rc4’

依赖

//帮助我们通过类调用的形式来生成java代码

implementation ‘com.squareup:javapoet:1.10.0’

JavaPoet的8个常用类

注意与APT中结构体语言表述区别

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

JavaPoet字符串格式化规则

在这里插入图片描述

核心原理

// AutoService则是固定的写法,加个注解即可
// 通过auto-service中的@AutoService可以自动生成AutoService注解处理器,用来注册
// 用来生成 META-INF/services/javax.annotation.processing.Processor 文件
@AutoService(Processor.class)
// 允许/支持的注解类型,让注解处理器处理(新增annotation module)
@SupportedAnnotationTypes({
   "com.example.annotation.ARouter"})
// 指定JDK编译版本
@SupportedSourceVersion(SourceVersion.RELEASE_7)
// 注解处理器接收的参数
@SupportedOptions
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值