java - Implementación rápida de ajuste(métodos delegados) en Eclipse?
wrapper code-assist (3)
Ahi esta. Use el menú Fuente-> Generar métodos de delegado ...
¿Hay alguna plantilla o algo para implementar métodos iterface con acceso al miembro envuelto?
Por ejemplo, supongamos que tengo
public class MyClass implements List<Something> {
private final List<Sometheing> core;
...
}
y ahora quiero implementar la List<Something>
pasando llamadas a envuelto como
@Override
public int size() {
return core.size();
}
y así.
Diré un poco más sobre cómo la refactorización de "Generar métodos de delegado" funciona para crear una clase de reenvío como la que usted describe.
Crea una nueva clase que opcionalmente implementa la interfaz y le proporciona un campo con el tipo que desea delgate, por ejemplo:
public class NewClass implements ThatInterface {
private final ThatInterface delegate;
public MyClass(ThatInterface delegate) {
this.delegate = delegate();
}
}
Entonces se aplica la refactorización de eclipse. (Cmd-3 deleg ... es una forma fácil de acceder.) Seleccione la casilla de verificación para el nuevo campo. Todos sus métodos serán agregados como delegados.
(Creo que hay un error en la refactorización para el oxígeno de Eclipse, donde copiará la palabra clave default
de los métodos con esa palabra clave en la interfaz. Es posible que deba eliminar esa palabra clave).
Entonces, para un delegado a una lista, la refactorización produjo:
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);
}
y así...
Probado en luna.
Use el atajo de teclado Alt - Shift - S , M 2 veces. Presiona enter