关于javapoet 理解

本文详细介绍使用JavaPoet库生成Java代码的过程,包括方法、类的构建,以及修饰符的正确使用。同时,探讨了JavaPoet如何智能处理import语句的位置,提供了一个实用的代码示例,并推荐了官方文档作为深入学习的最佳资源。

javapoet 是square产的生成 java的利器。

但添加的类型其实是不对类型进行校验的。会做些简单的校验。但不全

MethodSpec main= MethodSpec.methodBuilder("main")
        
        .addModifiers(Modifier.PUBLIC,Modifier.STATIC) //tag1
        .returns(void.class)
        .addParameter(String[].class,"args")
        .addStatement("$T.out.println($S)",System.class,"Hello ,java Poet!")
        .build();

TypeSpec helloWorld=TypeSpec.classBuilder("HelloWorld")
        .addModifiers(Modifier.PUBLIC,Modifier.FINAL)
        .addMethod(main)
        .build();
JavaFile javaFile=JavaFile.builder("com.test",helloWorld).build();
javaFile.writeTo(System.out);

最终生成的java文件:

package com.test;

import java.lang.String;
import java.lang.System;

public final class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello ,java Poet!");
  }
}

但如果 .addModifiers(Modifier.PUBLIC,Modifier.STATIC) //tag1  这里修改为

.addModifiers(Modifier.PUBLIC,Modifier.STATIC,Modifier.PRIVATE,Modifier.PROTECTED)
package com.test;

import java.lang.String;
import java.lang.System;

public final class HelloWorld {
  public protected private static void main(String[] args) {
    System.out.println("Hello ,java Poet!");
  }
}

 

===========================================================================================

在最后调用 JavaFile javaFile=JavaFile.builder("com.test",helloWorld).build(); 

这个时候 会把import 相关全部写到类最上面,而不是

public final class HelloWorld {
  java.util.Date getToday() {
    return new java.util.Date();
  }
}

变成 


package com.example.helloworld;

import java.util.Date;

public final class HelloWorld {
  Date getToday() {
    return new Date();
  }
}

会自动把对象给放到import 里。

 

其实最好的教程来源于官网

https://github.com/square/javapoet

 

转载于:https://my.oschina.net/u/3982963/blog/3019399

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值