最新文章

OpenRewrite 学习笔记(四):使用 JavaTemplate 创建复杂 LST

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,而不需要手动构造。

再见,解惑的 2024

再见,解惑的 2024

新年的钟声刚刚结束,站在 2025 年的第一天回望,2024 这一年,宛如一场盛大而深刻的旅程,为我解答了许多的人生谜题。如今,是时候一直挥手告别,迎接新的开始。

子曰:吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七 …