在我项目的所有java文件中,我想替换出现的:
myObject.getName() == null
有了这个:
myObject.hasName()
IntelliJ IDEA是否有任何行动或策略?
getName
的{{1}}方法具体而不是替换代码,它引用其他名为MyClass
的方法类。getName
或myObj
),它也应该有效。还应找到objX
之类的通话。 (搜索必须关注语义)。答案 0 :(得分:12)
使用Structural Search & Replace(编辑|查找|替换结构...),它专为此类用例而设计。
使用搜索模板:
$x$.getName() == null
替换模板:
$x$.hasName()
单击编辑变量... 按钮,并将表达式类型(正则表达式)指定为MyClass
。搜索时,您还会找到getObject().getName() == null
答案 1 :(得分:5)
使用Find and Replace Code Duplicates。
创建实例方法:
public boolean hasName() {
return getName() == null;
}
myObject.getName() == null
,然后使用重构|动作提取|方法...... 和重构|移动... ,因此您无需键入任何代码。单击该方法并使用重构|查找和替换代码重复。
然而,它不会重构这样的用法:
String name = myObject.getName();
if (name == null) {
...
}
您还可以对非实例方法使用此操作:
private boolean hasName(MyClass myObject) {
return myObject.getName() == null;
}
将导致方法静态,然后使用 Refactor |转换为实例方法。同样的结果。
答案 2 :(得分:2)
您可以将getName()
重命名为putGuidInHereIfYouWantToBeSure()
,然后在putGuidInHereIfYouWantToBeSure() == null
hasName()
答案 3 :(得分:-1)
$n
格式(以引用以前找到并保存的模式)。\
,请在介词中插入三个额外的反斜杠来转义有意义的反斜杠:\\\\
。