我想重构代码,使整个对象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;
}
}
3条答案
按热度按时间ssgvzors1#
首先,为你想要的方法/构造函数添加重载:
然后使用结构化搜索和替换(编辑>查找>结构化替换)来替换:
与
(If必要时,通过单击“编辑变量”将
$f$
约束为Foo
类型,从列表中选择f
,并将“预期类型(regexp)”设置为“Foo”)同样,替换:
与
k3fezbri2#
首先使用Ctrl+Alt+M提取一个方法,只调用
print(input.getI(), input.getJ());
IntelliJ将整个对象作为
print(Foo foo)
提取方法然后使用Ctrl+Alt+N内联旧的
public static void print(int i, int j)
方法b4wnujal3#
1.转到
Bar
类定义,然后右键单击并选择重构。1.选择更改签名
1.删除旧参数(-)
1.使用完全限定名(+)添加新参数