对于扩展C的类,用类型B替换类型A的构造函数变量

时间:2016-02-20 10:25:56

标签: java intellij-idea structural-search

我有大约100个看起来像这样的课程。

public class MyClass extends MyBaseClass {
    public MyClass(OldType variable, int var2, OldType v3) {
        //stuff

现在我想在扩展 MyBaseClass 的类中替换 OldType 类型的所有构造函数,并使用相同的变量名,但类型为< EM> NEWTYPE 。 所以它看起来像这样:

public class MyClass extends MyBaseClass {
    public MyClass(NewType variable, int var2, NewType v3) {
        //stuff

变量的数量和名称会有所不同。

我已经让IDEA找到所有使用Structural替换扩展MyBaseClass的类,但我是从那里开始的吗?

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用两个搜索步骤。第一步:找到扩展MyBaseClass的类的构造函数的参数。

class $A$ extends $B$ {
    $A$($T$ $p$);
}

变量
B - 文本/正则表达式:MyBaseClass,在类型层次结构中启用应用约束
p - 启用此变量是搜索的目标,出现次数:1, unlimited

第二步:替换范围Previous Search Results中正确类型的变量。

OldType $a$

替换模板:

NewType $a$