Java 当我刚提取一个参数时,有没有办法让Intellij用一个方法替换重复的代码?
如果我运行重构来提取一个方法,intellij有时会注意到有类似的代码可以用这个新方法替换。在很多情况下,我的下一步是提取一个参数,现在有更多的地方可以使用这种方法。但是,当我提取一个参数时,intellij不会检查是否有新的重复代码。有办法做到这一点吗 第一步 步骤2 步骤3Java 当我刚提取一个参数时,有没有办法让Intellij用一个方法替换重复的代码?,java,intellij-idea,refactoring,Java,Intellij Idea,Refactoring,如果我运行重构来提取一个方法,intellij有时会注意到有类似的代码可以用这个新方法替换。在很多情况下,我的下一步是提取一个参数,现在有更多的地方可以使用这种方法。但是,当我提取一个参数时,intellij不会检查是否有新的重复代码。有办法做到这一点吗 第一步 步骤2 步骤3 正如评论所说,我如何让intellij意识到它现在可以调用print(“foo”)?一旦提取了方法,IntelliJ就没有足够的智能来根据提取的参数进行类似的重构。正如您所发现的,它只会将参数提取到提取方法的现有调用者中
正如评论所说,我如何让intellij意识到它现在可以调用
print(“foo”)代码>?一旦提取了方法,IntelliJ就没有足够的智能来根据提取的参数进行类似的重构。正如您所发现的,它只会将参数提取到提取方法的现有调用者中
在步骤1中,通过如下更改bar()
尝试预先设置提取方法:
public void bar() {
String s = "bar";
System.out.println(s); // extract method for this line
}
然后在第2步中,IntelliJ已经足够聪明,能够找出所有类似的重构
如果因为第一次提取方法重构已经完成并提交,所以您一直坚持将步骤2作为起点,那么将我上面所说的应用于print()
方法(从中提取方法),您应该能够获得相同的结果。然后只需删除剩余的zero参数print()
package mavensandbox;
public class Main {
public void foo() {
System.out.println("foo");
}
public void bar() {
print();
}
private void print() {
System.out.println("bar"); //doh, I wanted "bar" to be a parameter, that's the next step
}
}
package mavensandbox;
public class Main {
public void foo() {
System.out.println("foo"); //ok, so how do I get intellij to realize it can now call print("foo"); instead?
}
public void bar() {
print("bar");
}
private void print(String s) {
System.out.println(s);
}
}
public void bar() {
String s = "bar";
System.out.println(s); // extract method for this line
}