gpt4 book ai didi

java - 如何在 IntelliJ Structural Replace 中将 Java 基元转换为装箱类型

转载 作者:行者123 更新时间:2023-12-02 09:02:49 24 4
gpt4 key购买 nike

我正在尝试使用 IntelliJ Structural Search 和 Replace 来重载一组带有 Optional 的 setter 方法。变体。这需要考虑到目标值可能是原始值(例如 booleanOptional<Boolean> )。这是转换的核心部分:

搜索:

public static void set($BType$ $BName$, $VType$ $VName$) {
$body$; // 0 - infinity
}

替换:

public static void set($BType$ $BName$, java.util.Optional<$VTypeMightBeBoxed$> $VName$) {
$VName$.ifPresent(v -> set($BName$, v));
}
public static void set($BType$ $BName$, $VType$ $VName$) {
$body$;
}

我对生成 $vTypeMightBeBoxed 所需的 PSI Groovy 脚本有点困惑

PS。这主要是由于添加这些脚本时完全缺乏编辑器协助造成的!这不是 Jetbrains 的预期!

最佳答案

像这样的$VTypeMightBeBoxed$脚本应该可以工作:

import com.intellij.psi.*
def x = VType.getType()
if (x instanceof PsiPrimitiveType) {
return x.getBoxedTypeName();
} else {
return VType.getText();
}

但请注意,当类中存在多个同名的 set 方法时,您的替换将生成红色代码:这些方法将具有相同的删除。

关于java - 如何在 IntelliJ Structural Replace 中将 Java 基元转换为装箱类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60036823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com