JavaPoet学习

这是一个帮助我们动态生成代码的框架.

这里先给一个最简单的案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Test {
public static void main(String[] args) throws IOException {
buildAjavaFile();
}

static void buildAjavaFile() throws IOException {
MethodSpec methodSpec = MethodSpec.methodBuilder("test")
.addModifiers(Modifier.PUBLIC,Modifier.STATIC)
.returns(void.class)
.addParameter(Integer.class,"loop")
.addCode("System.out.print("生成的代码");\n")
.addCode("$T a = $L",Tea.class,"new Tea()")
.build();
TypeSpec typeSpec = TypeSpec.classBuilder("TestCode")
.addModifiers(Modifier.PUBLIC,Modifier.FINAL)
.addMethod(methodSpec)
.build();
JavaFile javaFile = JavaFile.builder("com.haha.hah",typeSpec)
.build();
// 将java文件内容写入文件中
File file = new File("./javapoet");
javaFile.writeTo(file);
}
}

生成的代码:

1
2
3
4
5
6
7
8
9
10
11
package com.haha.hah;

import ddd.Tea;
import java.lang.Integer;

public final class TestCode {
public static void test(Integer loop) {
System.out.print("生成的代码");
Tea a = new Tea()
}
}

可以看到需要import的内容他也帮我们自动添加了.

更多详细的使用文档可以参考这个博客:

  1. https://blog.csdn.net/IO_Field/article/details/89355941
  2. https://blog.csdn.net/chennai1101/article/details/103975423

captrue.png