JavaPoet学习

184 阅读1分钟

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

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

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的内容他也帮我们自动添加了.

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

  1. blog.csdn.net/IO_Field/ar…
  2. blog.csdn.net/chennai1101…

captrue.png