Intellij Idea IDE有没有复合Javaclasses的特性(转发class代)

Does Intellij Idea IDE has a feature to composite Java classes (forwarding class generation)

例如,我想扩展 HashSet class,但我没有扩展 class,而是给新 class 一个引用现有 class 实例的私有字段=28=]。新 class 中的每个实例方法调用现有 class 和 returns 结果的包含实例上的相应方法。这是一种组合和转发的方法。

即例如,我希望 IDE 基于 Set:

生成 ForwardingSet class
public class ForwardingSet<E> implements Set<E> {
     private final Set<E> s;

     public ForwardingSet(Set<E> s){ 
            this.s = s; 
     }

     public boolean contains(Object o){ 
            return s.contains(o); 
     }

     public boolean isEmpty(){
            return s.isEmpty();
     }


... and etc.

}

那么,如何在 Idea 中生成它?

P.S:类似的问题是 here,但没有答案。

这可以使用 "Generate delegated method" 功能来完成:

  1. 创建一个基本 class 仅包含您要委托给的字段:

    public class ForwardingSet<E> implements Set<E> {
         private final Set<E> s;
    }
    
  2. 在本地 s 变量后右击并按 "generate"

  3. Select "Delegate Methods" 在弹出窗口中,后面是局部 s 变量

  4. Select 你想覆盖的一切

  5. (可选)使用复制和替换将 public 替换为 @Override public,然后手动删除文件中的第一个 public,以摆脱所有覆盖警告