我将详细介绍“生成委托方法”重构的工作原理,以创建您描述的转发类。
您可以创建一个新类,该类可以选择性地实现接口,并为其提供一个具有要 delgate 类型的字段,例如:
public class NewClass implements ThatInterface {
private final ThatInterface delegate;
public MyClass(ThatInterface delegate) {
this.delegate = delegate();
}
}
然后应用日食重构。(Cmd-3 deleg...是访问它的一种简单方法。选中新字段的复选框。其所有方法都将添加为委托。
(我认为,在 Eclipse oxygen 的重构中存在一个错误,它将从接口上具有该关键字的方法中复制默认
关键字。您可能需要删除该关键字。
因此,对于列表的委托,重构产生了:
public class NewClass {
private final List<String> delegate;
public NewClass(List<String> delegate) {
this.delegate = delegate;
}
public void forEach(Consumer<? super String> action) {
delegate.forEach(action);
}
public int size() {
return delegate.size();
}
public boolean isEmpty() {
return delegate.isEmpty();
}
public boolean contains(Object o) {
return delegate.contains(o);
}
等等...