¿Cómo puedo hacer que un método acepte instancias con dos interfaces? [duplicar]
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo puedo requerir un argumento de método en Java para implementar múltiples interfaces? 1 respuesta
Tengo un par de interfaces:
public interface Speaker {
void speak();
}
public inteface Walker {
void walk();
}
Quiero un método que tome instancias que sean a la vez a Speaker
y a Walker
.
Ahora, podría implementar otra interfaz:
public interface WalkerSpeaker extends Walker, Speaker {
}
Y aceptar que:
void walkAndTalk(final WalkerSpeaker x) {
x.walk();
x.speak();
}
Pero esto es bastante engorroso con muchas combinaciones, y cada implementación debe heredar de WalkerSpeaker
para que funcione!
Hay una manera mejor?
23
1 answers
Puede lograr esto con 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 limitado" a ambas interfaces, por lo que en esencia T
será un WalkerSpeaker
excepto que no tiene que escribir una interfaz separada para él.
53
Author: Kayaman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-15 13:41:38
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-15 13:41:38