У меня есть пара интерфейсов:
public interface Speaker {
void speak();
}
public inteface Walker {
void walk();
}
Мне нужен метод, который принимает экземпляры, которые являются как Speaker
, так и Walker
.
Теперь я мог бы реализовать другой интерфейс:
public interface WalkerSpeaker extends Walker, Speaker {
}
И примите, что:
void walkAndTalk(final WalkerSpeaker x) {
x.walk();
x.speak();
}
Но это довольно громоздко для многих комбинаций, и каждая реализация должна наследовать от WalkerSpeaker
, чтобы она работала!
Есть ли лучший способ?