Eclipse 中的快速实现包装(委托方法)?

是否有一些模板或其他东西来实现具有访问包装成员的迭代方法?

例如,假设我有

public class MyClass implements List<Something> {

    private final List<Something> core;

...
}

现在我想通过传递调用来实现包装,就像List<Something>

@Override
public int size() {
    return core.size();
}

等等。


答案 1

有。使用“源”菜单>生成委托方法...


答案 2

我将详细介绍“生成委托方法”重构的工作原理,以创建您描述的转发类。

您可以创建一个新类,该类可以选择性地实现接口,并为其提供一个具有要 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);
   }

等等...


推荐