作者:敬炜8965肀 | 来源:互联网 | 2023-02-06 13:07
在我的项目的所有java文件中,我想替换出现的:
myObject.getName() == null
接着就,随即:
myObject.hasName()
IntelliJ IDEA是否有任何行动或策略可以做到这一点?
我希望它特定于getName
我的类的方法MyClass
而不是替换代码,它引用getName
其他类调用的方法.
我希望它能找到尽可能多的匹配.它不应该关心额外的空格,换行符等.如果变量有另一个名称(如myObj
或objX
),它也应该工作.getObject().getName()
也应该找到类似的电话.(搜索必须关注语义).
我希望它快速而不是要求我逐个完成数百场比赛.
Bas Leijdekk..
12
使用结构搜索和替换(编辑|查找|替换结构...),它是专为这样的用例设计的.
使用搜索模板:
$x$.getName() == null
替换模板:
$x$.hasName()
单击" 编辑变量..."按钮并将" 表达式类型"(regexp)指定为MyClass
.搜索时也会找到你的例子getObject().getName() == null
1> Bas Leijdekk..:
使用结构搜索和替换(编辑|查找|替换结构...),它是专为这样的用例设计的.
使用搜索模板:
$x$.getName() == null
替换模板:
$x$.hasName()
单击" 编辑变量..."按钮并将" 表达式类型"(regexp)指定为MyClass
.搜索时也会找到你的例子getObject().getName() == null
2> Meo..:
使用查找和替换代码重复项.
创建实例方法:
public boolean hasName() {
return getName() == null;
}
为此,我建议选择myObject.getName() == null
,然后使用动作Refactor | 提取| 方法......和重构| 移动...,这样您就不必输入任何代码.
单击该方法并使用Refactor | 查找和替换代码重复项.
但是,它不会重构这样的用法:
String name = myObject.getName();
if (name == null) {
...
}
您还可以在非实例方法上使用此操作:
private boolean hasName(MyClass myObject) {
return myObject.getName() == null;
}
这将导致方法静态,然后使用Refactor | 转换为实例方法.结果相同.