variable una otra objeto misma metodo llamar interfaz interfaces grafica ejercicios ejemplos desde como clases clase abstractas java oop interface

java - una - ¿Cómo hago un método para aceptar instancias con dos interfaces?



llamar un objeto desde otra clase java (1)

Tengo un par de interfaces:

public interface Speaker { void speak(); } public inteface Walker { void walk(); }

Quiero un método que tome instancias que sean tanto un Speaker como un Walker .

Ahora, podría implementar otra interfaz:

public interface WalkerSpeaker extends Walker, Speaker { }

Y acepta que:

void walkAndTalk(final WalkerSpeaker x) { x.walk(); x.speak(); }

¡Pero esto es bastante engorroso con muchas combinaciones, y cada implementación debe heredarse de WalkerSpeaker para que funcione!

¿Hay alguna manera mejor?


Puedes lograr esto con los genéricos de la siguiente manera

public <T extends Speaker & Walker> void walkAndTalk(T x) { x.walk(); x.speak(); }

El parámetro de tipo T estará "doblemente vinculado" a ambas interfaces, por lo que en esencia T será un WalkerSpeaker excepto que no tiene que escribir una interfaz separada para él.