使用 IntelliJ,您可以使用Remove Middleman重构。
考虑:
之前:
public class W {
private C c;
Object getX() { return c.getX(); }
Object getY() { return c.getY(); }
}
public class C {
private Object x;
private Object y;
public Object getX() {
return x;
}
public Object getY() {
return y;
}
}
public class UsesW {
W w;
public void useW() {
Object x = w.getX();
Object y = w.getY();
}
}
将光标放在W.c
. 然后选择重构 | 删除中间人。结果使您到达想要的位置的一半:
之后:
public class W {
private C c;
public C getC() {
return c;
}
}
/* class C is unchanged */
public class UsesW {
W w;
public void useW() {
Object x = w.getC().getX();
Object y = w.getC().getY();
}
}
然后你可以引入一个 in 类型的C
变量UsesW
。将光标放在其中一个调用上w.getC()
并将其内联:重构 | 内联...(Ctrl-Alt-N
是默认快捷方式),选择内联所有实例。它会给你留下这个:
public class UsesW {
W w;
public void useW() {
final C c = w.getC();
Object x = c.getX();
Object y = c.getY();
}
}
最终完全摆脱W
是您可能比我回答得更好的问题,但现在这项工作变得容易得多。