自定义APT之:javapoet

javapoet用于在编译时构建生成的java文件。首先看一下javapoet所在包:
在这里插入图片描述
首先回顾一下.java文件都有哪些内容:
在这里插入图片描述
javapoet的使用都是围绕这些元素来的,上面的类和方法,从.java文件的角度去考虑很好理解,就不去多说了。下面重点说一下Statement中的类型占位符的使用:
我们先来看看 statement 占位符在哪里使用: MethodSpec.methodBuilder(“method”)

    .addStatement("$T file", File.class)            // File file;
    .addStatement("$L = null", "file")              // file = null;
    .addStatement("file = new File($S)", "foo/bar") // file = new File("foo/bar");
    .build();

$T :是类型替换, 一般用于 ("$T foo", List.class) => List foo。$T 的好处在于 JavaPoet 会自动帮你补全文件开头的 import. 如果直接写 (“List foo”) 虽然也能生成 List foo, 但是最终的 java 文件就不会自动帮你添加 import java.util.List;
$L :是字面量替换, 比如 (“abc$L123”, “FOO”) => abcFOO123. 也就是直接替换;
$S : 是字符串替换, 比如: ("$S.length()", “foo”) => “foo”.length()
注意 $S 是将参数替换为了一个带双引号的字符串. 免去了手写 “\“foo\”.length()” 中转义 (\") 的麻烦;
$N :是名称替换, 比如你之前定义了一个函数 MethodSpec methodSpec = MethodSpec.methodBuilder(“foo”).build(); 现在你可以通过 $N 获取这个函数的名称 ("$N", methodSpec) => foo.

下面提供一张万能图,使用不清楚时方便查找:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值