我想更改具有特定签名的方法:
public OldReturnType get.*(Params) {
//lots of code
}
到此:
public NewReturnTyp get.*(Params) {
//lots of code
}
- >我想替换返回类型。我用SSR尝试了这个:
复制现有模板“类的方法”。这会产生模板:
class $ Class $ { $ ReturnType $ $ MethodName $($ ParameterType $ $ Parameter $); }
我首先尝试分别替换$ ReturnType $ OldType和NewType:
搜索模板:
class $Class$ {
OldType $MethodName$($ParameterType$ $Parameter$);
}
替换模板:
class $Class$ {
NewType $MethodName$($ParameterType$ $Parameter$);
}
这给了我所有的方法,但如果我替换它,方法就会被删除。
然后我尝试按以下方式更改模式:
搜索模板:
class $Class$ {
$OldType$ $MethodName$($ParameterType$ $Parameter$);
}
并指定,$ OldType $应该是搜索的目标。我还为此变量指定了一个RegEx模式:OldType。
替换模板:
class $Class$ {
NewType $MethodName$($ParameterType$ $Parameter$);
}
这也找到了所有方法,但是如果我替换它们就会被删除。我尝试了非常不同,总是有相同的结果:如果我替换匹配,方法将被删除。如何指定搜索/替换模板以仅在签名中用NewType替换OldType。
答案 0 :(得分:5)
您在“结构搜索”中遇到了一个错误。更换。可能是这个:https://youtrack.jetbrains.com/issue/IDEA-127835
但有一个解决方法。使用以下搜索模板:
class $Class$ {
OldType $MethodName$($ParameterType$ $Parameter$) {
$statement$;
}
$other$;
}
确保"此变量是搜索的目标"对于$ MethodName $未设置,或者它无法正常工作。
$声明$
最小数量:0
最大数量:无限
<强> $ $其他强>
最小数量:0
最大数量:无限
其余内容与类现有模板的方法一样。
替换模板正如您所期望的那样与搜索模板相同,只有NewType替换OldType。
让我知道它是否有效,或者你是否还有其他问题。