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