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

Java 在Eclipse中快速实现包装(委托方法)?,java,eclipse,wrapper,code-assist,code-templates,Java,Eclipse,Wrapper,Code Assist,Code Templates,是否有一些模板或东西来实现iterface方法以访问包装的成员 例如,假设我有 public class MyClass implements List<Something> { private final List<Something> core; ... } 等等。有。使用源菜单->生成代理方法…在Luna中测试 使用快捷键Alt-Shift-S,M 2次。按Enter键,我将进一步介绍“Generate Delegate Methods”重构如何创建您

是否有一些模板或东西来实现iterface方法以访问包装的成员

例如,假设我有

public class MyClass implements List<Something> {

    private final List<Something> core;

...
}

等等。

有。使用源菜单->生成代理方法…

在Luna中测试


使用快捷键Alt-Shift-S,M 2次。按Enter键,我将进一步介绍“Generate Delegate Methods”重构如何创建您描述的转发类

您可以创建一个新类,该类可以选择性地实现接口,并为其提供一个字段,该字段的类型为您要delgate的类型,例如:

public class NewClass implements ThatInterface {
  private final ThatInterface delegate;

  public MyClass(ThatInterface delegate) {
    this.delegate = delegate();
  }
}
然后应用eclipse重构。(Cmd-3 deleg…是访问它的简单方法。)选中新字段的复选框。它的所有方法都将作为委托添加

(我认为在Eclipse oxygen的重构中存在一个bug,它将从界面上具有该关键字的方法中复制
default
关键字。您可能需要删除该关键字。)

因此,对于列表的委托,重构会产生:

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);
   }
公共类NewClass{
非公开最终名单代表;
公共类(列表委托){
this.delegate=委托;
}
每个(消费者)的公共空间
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);
   }