java - Intellij Idea IDE 是否具有复合 Java 类的功能(转发类生成)

标签 java intellij-idea facade

例如,我想扩展 HashSet 类,但我没有扩展该类,而是为我的新类提供了一个引用现有类实例的私有(private)字段。新类中的每个实例方法调用现有类的包含实例上的相应方法并返回结果。这是一种组合和转发方法。

即例如,我希望 IDE 基于 Set 生成 ForwardingSet 类:

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. 创建一个仅包含您要委托(delegate)给的字段的基本类:

    public class ForwardingSet<E> implements Set<E> {
         private final Set<E> s;
    }
    
  2. 在本地s变量后右键点击“生成”

  3. 在弹出窗口中选择“Delegate Methods”,然后是本地s变量

  4. 选择要覆盖的所有内容

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

关于java - Intellij Idea IDE 是否具有复合 Java 类的功能(转发类生成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49483933/

相关文章:

java - 在最大尝试次数后,Testng RetryListener 未使测试用例失败

maven - 在 intellij 14 行找不到可执行代码

java - 使用增强的 for 循环时更改数组列表大小

java - Android 如何同步两个异步任务?

java - 在 Servlet 上下文中引用属性文件

javascript - IntelliJ IDEA 中类 map 对象的 JSDoc 类型

java - 将访问例程添加到 JAXB 生成的源自 XSD 的类集

spring-boot - 为什么我不应该在一个 Controller 类中调用多个服务?

java - findByUsername 或 Facade 抽象类的 find 方法

java - Android:Activity和Fragment Activity之间的通信