这是一个帮助我们动态生成代码的框架.
这里先给一个最简单的案例:
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);
}
}
生成的代码:
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的内容他也帮我们自动添加了.
更多详细的使用文档可以参考这个博客: