该项目代码量相对较小,只有一个package(com.squareup.javapoet),所有类均位于该package下。
2.1 大体结构图
2.2 关键类说明
| class | 说明 | |
| — | — | — |
| JavaFile | A Java file containing a single top level class | 用于构造输出包含一个顶级类的Java文件 |
| TypeSpec | A generated class, interface, or enum declaration | 生成类,接口,或者枚举 |
| MethodSpec | A generated constructor or method declaration | 生成构造函数或方法 |
| FieldSpec | A generated field declaration | 生成成员变量或字段 |
| ParameterSpec | A generated parameter declaration | 用来创建参数 |
| AnnotationSpec | A generated annotation on a declaration | 用来创建注解 |
在JavaPoet中,JavaFile是对.java文件的抽象,TypeSpec是类/接口/枚举的抽象,MethodSpec是方法/构造函数的抽象,FieldSpec是成员变量/字段的抽象。这几个类各司其职,但都有共同的特点,提供内部Builder供外部更多更好地进行一些参数的设置以便有层次的扩展性的构造对应的内容。
另外,它提供 L ( f o r L i t e r a l s ) , L(for Literals), L(forLiterals), S(for Strings), $T(for Types), $N(for Names)等标识符,用于占位替换。
3.1 API使用
关于JavaPoet 的API使用,官方Github主页已经有很详细的使用说明和示例了,具体可前往查看。此处不赘述,详见 项目主页、源码及使用说明
3.2 一个简单示例
下面就让我们以一个简单HelloWorld的例子来开启我们的JavaPoet之旅。
引入库:
build.gradle
compile 'com.squareup:javapoet:1.9.0'
-
1
-
1
例子如下:
package com.example.helloworld; public final class HelloWorld { public static void main(String[] args) { System.out.println("Hello, Jav