Ho un paio di interfacce:Come faccio ad accettare un metodo con istanze con due interfacce?
public interface Speaker {
void speak();
}
public inteface Walker {
void walk();
}
Voglio un metodo che prende le istanze che sono sia un Speaker
e Walker
.
Ora, potrei implementare un'altra interfaccia:
public interface WalkerSpeaker extends Walker, Speaker {
}
e accetta che:
void walkAndTalk(final WalkerSpeaker x) {
x.walk();
x.speak();
}
Ma questo è abbastanza ingombrante con molte combinazioni, e ogni implementazione deve ereditare da WalkerSpeaker
per farlo funzionare !
C'è un modo migliore?
Questo è praticamente come è. Se diventa ingombrante, potresti voler guardare il tuo disegno. – Underbalanced
@Ravindrababu la tua risposta a tale link è altrettanto ingombrante e molto rigida che non può essere ampliata o modificata facilmente. – Underbalanced
fyi: È buona norma usare 'implements' invece di' extends' per le interfacce. – Akunosh