
OpenRewrite 学习笔记(四):使用 JavaTemplate 创建复杂 LST
LST 是 OpenRewrite 的核心,是 OpenRewrite 实现精准、可控代码修改的关键支柱。本文将介绍如何使用 JavaTemplate 创建复杂的 LST。 背景 在操作代码的过程中,可能需要添加、修改、删除代码片段。比如添加一个变量声明、添加一个方法、修改一个方法体等。这些操作都需要创建 LST(Lossless Semantic Tree)。那如何创建一个变量声明的 LST? 我们需要创建变量声明 J.VariableDeclarations 以及变量 J.VariableDeclarations.NamedVariable,并将其添加到方法体中。看起来很简单,但是在使用构造器初始化对象时需要提供很多参数。何况很多参数自身的初始化也是一个复杂的过程,需要保证类型的属性匹配准确。 实际上不需要这么麻烦,也是 官方不推荐的方式。OpenRewrite 提供了 JavaTemplate 来简化这个过程。 JavaTemplate javaTemplate = JavaTemplate.builder("List<String> list = new ArrayList<>();") .build(); 上面的代码片段中,通过 JavaTemplate 构建了一个变量声名赋值的 LST。使用 JavaTemplate 可以生成格式准确、类型属性完整的 LST,而不需要手动构造。