javapoet

Github:https://github.com/square/javapoet

文章目录

  • 1 简单使用

1 简单使用

新建JavaLibrary类型的Module

在build.gradle中的dependencies下添加依赖,如下:

 compile 'com.squareup:javapoet:1.11.1'

创建CodeGenerate.java,代码如下:

public class CodeGenerate {
    public static void main(String[] args) {
        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();

        try {
            javaFile.writeTo(System.out);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

右键 Run ‘CodeGenerate.main()’,查看输出结果如下:
javapoet_第1张图片


JavaPoet是Java编译时注解开发的工具库,提供了编写Java代码的接口,在编译器中自动生成源代码。

JavaPoet有5个常用的类:

  • ParameterSpec :参数说明。
  • FieldSpec :创建成员变量,即声明字段。
  • MethodSpec :创建构造函数或方法。
  • TypeSpec:代表一个类,接口,或者枚举声明。
  • JavaFile :包含拥有一个类对象的Java文件,根据创建好的变量方法和类信息创建Java源文件。

$L $S $T $N 都是占位符。

  • $L:常量
  • $S:String类型
  • $T:变量指定类型,可以通过ClassName来指定外部类名
  • $N:生成的方法名或者变量名

编写顺序必须遵循:
FieldSpec->ParameterSpec->MethodSpec->TypeSpec->JavaFile

你可能感兴趣的:(Android组件化)