例如,我想扩展 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" 来完成特点:
创建一个仅包含您要委托(delegate)给的字段的基本类:
public class ForwardingSet<E> implements Set<E> { private final Set<E> s; }
在本地
s
变量后右键点击“生成”在弹出窗口中选择“Delegate Methods”,然后是本地
s
变量选择要覆盖的所有内容
(可选)使用复制和替换将
public
替换为@Override public
,然后为文件中的第一个 public 手动删除它,以摆脱在所有覆盖警告中
关于java - Intellij Idea IDE 是否具有复合 Java 类的功能(转发类生成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49483933/