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

时间:2013-03-13 21:45:29

标签: java eclipse wrapper code-assist code-templates

是否有一些模板或某些东西可以通过访问包装成员来实现iterface方法?

例如,假设我有

public class MyClass implements List<Something> {

    private final List<Something> core;

...
}

现在我希望通过将调用传递给像

这样的包来实现List<Something>
@Override
public int size() {
    return core.size();
}

等等。

3 个答案:

答案 0 :(得分:27)

有。使用源菜单 - &gt;生成委托方法...

答案 1 :(得分:5)

我将更多地谈论“生成委托方法”重构如何用于创建您描述的转发类。

创建一个可选择实现接口的新类,并为其提供一个具有您想要删除的类型的字段,例如:

public class NewClass implements ThatInterface {
  private final ThatInterface delegate;

  public MyClass(ThatInterface delegate) {
    this.delegate = delegate();
  }
}

然后你应用​​eclipse重构。 (Cmd-3 deleg ...是一种访问它的简单方法。)选择新字段的复选框。它的所有方法都将作为代表添加。

(我认为,在Eclipse氧气的重构中存在一个错误,它会在界面上使用该关键字的方法复制default关键字。您可能需要删除该关键字。 )

因此,对于List的委托,产生了重构:

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);
   }

依旧......

答案 2 :(得分:1)

在Luna中测试过。

使用快捷键 Alt - Shift - S M 2次。按 Enter