sla*_*dan 12 java refactoring intellij-idea structural-search
在我的项目的所有java文件中,我想替换出现的:
myObject.getName() == null
Run Code Online (Sandbox Code Playgroud)
接着就,随即:
myObject.hasName()
Run Code Online (Sandbox Code Playgroud)
IntelliJ IDEA是否有任何行动或策略可以做到这一点?
getName我的类的方法MyClass而不是替换代码,它引用getName其他类调用的方法.myObj或objX),它也应该工作.getObject().getName()也应该找到类似的电话.(搜索必须关注语义).Bas*_*ers 12
使用结构搜索和替换(编辑|查找|替换结构...),它是专为这样的用例设计的.
使用搜索模板:
$x$.getName() == null
Run Code Online (Sandbox Code Playgroud)
替换模板:
$x$.hasName()
Run Code Online (Sandbox Code Playgroud)
单击" 编辑变量..."按钮并将" 表达式类型"(regexp)指定为MyClass.搜索时也会找到你的例子getObject().getName() == null
使用查找和替换代码重复项.
创建实例方法:
public boolean hasName() {
return getName() == null;
}
Run Code Online (Sandbox Code Playgroud)
myObject.getName() == null,然后使用动作Refactor | 提取| 方法......和重构| 移动...,这样您就不必输入任何代码.单击该方法并使用Refactor | 查找和替换代码重复项.
但是,它不会重构这样的用法:
String name = myObject.getName();
if (name == null) {
...
}
Run Code Online (Sandbox Code Playgroud)您还可以在非实例方法上使用此操作:
private boolean hasName(MyClass myObject) {
return myObject.getName() == null;
}
Run Code Online (Sandbox Code Playgroud)
这将导致方法静态,然后使用Refactor | 转换为实例方法.结果相同.
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |