我想重构代码,以便将整个对象input
作为参数而不是其部分input.getI(), input.getJ()
传递。
我可以轻松地执行与Extract Parameter
操作相反的操作,但是如何在IntelliJ中的代码库中重构它呢?
public static void main(String[] args) {
Foo input = new Foo(0, 1);
//What I have:
new Bar(input.getI(), input.getJ());
print(input.getI(), input.getJ());
//What I want:
//new Bar(input);
//print(input);
}
public static void print(int i, int j) {
System.out.println(i + j);
}
public static class Foo {
private int i;
private int j;
public Foo(int i, int j) {
this.i = i;
this.j = j;
}
public int getI() {
return i;
}
public int getJ() {
return j;
}
}
public static class Bar {
private int i;
private int j;
public Bar(int i, int j) {
this.i = i;
this.j = j;
}
}
答案 0 :(得分:4)
首先,为所需的方法/构造函数添加重载:
public static void print(Foo foo) { ... }
public Bar(Foo foo) { ... }
然后使用结构搜索并替换(编辑>查找>结构替换)以替换:
print($f$.getI(), $f$.getJ());
与
print($f$);
(如有必要,可通过点击“修改变量”将$f$
约束为Foo
类型,从列表中选择f
,然后将“预期类型(正则表达式)”设置为“富“)
同样,替换:
new Bar($f$.getI(), $f$.getJ());
与
new Bar($f$);
答案 1 :(得分:-1)
Bar
类定义,然后右键单击并选择
重构。