Suz*_*ioc 21 java eclipse wrapper code-templates code-assist
是否有一些模板或东西来实现iterface方法访问包装成员?
例如,假设我有
public class MyClass implements List<Something> {
private final List<Something> core;
...
}
Run Code Online (Sandbox Code Playgroud)
现在我想List<Something>通过将调用传递给包装来实现
@Override
public int size() {
return core.size();
}
Run Code Online (Sandbox Code Playgroud)
等等.
我将更多地说一下"生成委托方法"重构如何工作来创建像你描述的转发类.
您创建了一个可选择实现接口的新类,并为其提供了一个具有您想要degate类型的字段,例如:
public class NewClass implements ThatInterface {
private final ThatInterface delegate;
public MyClass(ThatInterface delegate) {
this.delegate = delegate();
}
}
Run Code Online (Sandbox Code Playgroud)
然后你应用eclipse重构.(Cmd-3 deleg ...是一种访问它的简单方法.)选择新字段的复选框.它的所有方法都将作为代表添加.
(我认为,在Eclipse氧气的重构中存在一个错误,它会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);
}
Run Code Online (Sandbox Code Playgroud)
等等...