JavaPoet源码初探
JavaPoet是用于代码生成的开源编程框架,利用JavaPoet可以方便生成.java文件。代码生成技术相当于元编程,可用于编译期根据注解等元数据动态生成java类。广泛使用的dagger,butterknife框架就是利用JavaPoet对注入注解生成所需类。相关地址:github地址
JavaPoet使用
JavaPoet使用比较简便,以简单的helloworld代码为例,如下:
package com.example.helloworld;
public final class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, JavaPoet!");
}
}
使用JavaPoet生成helloword代码如下所示:
MethodSpec main = MethodSpec.methodBuilder("main")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(void.class)
.addParameter(String[].class, "args")
.addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet!")
.build();
TypeSpec helloWorld = TypeSpec.classBuilder("HelloWorld")
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
.addMethod(main)
.build();
JavaFile javaFile = JavaFile.builder("com.example.helloworld", helloWorld)
.build();
javaFile.writeTo(System.out);
其中,JavaFile是对.java文件的抽象,TypeSpec是类的抽象,MethodSpec是方法的抽象。JavaPoet提供 T,