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();
}
}
C
次に、 in型の変数を導入できますUsesW
。への呼び出しの 1 つにカーソルを置き、w.getC()
インライン化します。Inline... (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
ことは、おそらく私よりもうまく答えることができるものですが、今ではその作業が大幅に簡単になりました.