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" 功能来完成:
创建一个基本 class 仅包含您要委托给的字段:
public class ForwardingSet<E> implements Set<E> {
private final Set<E> s;
}
在本地 s
变量后右击并按 "generate"
Select "Delegate Methods" 在弹出窗口中,后面是局部 s
变量
Select 你想覆盖的一切
(可选)使用复制和替换将 public
替换为 @Override public
,然后手动删除文件中的第一个 public,以摆脱所有覆盖警告
例如,我想扩展 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" 功能来完成:
创建一个基本 class 仅包含您要委托给的字段:
public class ForwardingSet<E> implements Set<E> { private final Set<E> s; }
在本地
s
变量后右击并按 "generate"Select "Delegate Methods" 在弹出窗口中,后面是局部
s
变量Select 你想覆盖的一切
(可选)使用复制和替换将
public
替换为@Override public
,然后手动删除文件中的第一个 public,以摆脱所有覆盖警告