implementacion - Implementación de múltiples interfaces con Java: ¿hay alguna manera de delegar?
implementacion de interfaces en java (4)
Necesito crear una clase base que implemente varias interfaces con muchos métodos, ejemplo a continuación.
¿Hay alguna manera más fácil de delegar estas llamadas a métodos sin tener que crear una horda de métodos duplicados?
public class MultipleInterfaces implements InterFaceOne, InterFaceTwo {
private InterFaceOne if1;
private InterFaceTwo if2;
public MultipleInterfaces() {
if1 = new ImplementingClassOne();
if2 = new ImplementingClassTwo();
}
@Override
public void classOneMethodOne { if1.methodOne(); }
@Override
public void classOneMethodTwo { if1.methodTwo(); }
/** Etc. */
@Override
public void classTwoMethodOne { if2.methodOne(); }
@Override
public void classTwoMethodTwo { if2.methodTwo(); }
/** Etc. */
}
Como dije, no hay forma. Sin embargo, un IDE poco decente puede autogenerar métodos de delegado. Por ejemplo, Eclipse puede hacer. Primero configura una plantilla:
public class MultipleInterfaces implements InterFaceOne, InterFaceTwo {
private InterFaceOne if1;
private InterFaceTwo if2;
}
luego haga clic con el botón derecho, elija Fuente> Generar métodos delegados y marque los campos if1
e if2
y haga clic en Aceptar .
Ver también las siguientes pantallas:
Lamentablemente no.
Todos estamos esperando ansiosamente el soporte de Java para los métodos de extensión
No hay una manera bonita. Es posible que pueda usar un proxy con el controlador que tiene los métodos de destino y delegar todo lo demás a ellos. Por supuesto, tendrás que usar una fábrica porque no habrá un constructor.
Hay una forma de implementar una interfaz múltiple.
Simplemente extienda una interfaz desde otra o cree una interfaz que extienda la interfaz predefinida Ex:
public interface PlnRow_CallBack extends OnDateSetListener {
public void Plan_Removed();
public BaseDB getDB();
}
ahora tenemos una interfaz que se extiende a otra interfaz para usar en nuestra clase simplemente use esta nueva interfaz que implementa dos o más interfaces
public class Calculator extends FragmentActivity implements PlnRow_CallBack {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
}
@Override
public void Plan_Removed() {
}
@Override
public BaseDB getDB() {
}
}
espero que esto ayude