使用IntelliJ Structural Search和Replace替换具有属性的getter

时间:2014-06-06 03:23:59

标签: intellij-idea intellij-13 structural-search

由于我正在使用的库中的更改,getter被替换为直接访问该属性。例如:

public class MyLibraryClass {
  private String field;

  public String getField() { return field; }
}

已成为

public class MyLibraryClass {
  public String field;
}

因此,我想使用IntelliJ的SSR用Bean属性替换getter调用。但是我已经陷入了如何使用正则表达式捕获组进行替换的问题。如果有另一个IntelliJ快捷方式可以做我想要的,我很乐意使用它。

以下SSR搜索参数可以找到getter,但我似乎无法在替换中使用$property$的捕获组。我已尝试\1\$1以及$1查看(using backreferences in IntelliJ

我也尝试将搜索更改为$instance$.get$property$()(清除$property$的约束,但搜索未返回任何结果。

  1. 如何访问捕获组($1
  2. 是否可以在替换之前对$1执行任何处理(以解决此案)
  3. 我注意到Script text选项接受了Groovy代码,但我找不到有关此功能的任何文档。

    SSR search template instance variable config property variable config

1 个答案:

答案 0 :(得分:6)

放入替换模板$instance$.$field$。此模板引入了新变量field,其中应包含以下脚本文本:

String name = property.methodExpression.referenceName.substring(3)
name[0].toLowerCase() + name.substring(1)