interfaces implementacion ejemplos java interface delegation

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:



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