我有几个接口(interface):
public interface Speaker {
void speak();
}
public inteface Walker {
void walk();
}
我想要一个方法,它采用 Speaker
和 Walker
的实例。
现在,我可以实现另一个接口(interface):
public interface WalkerSpeaker extends Walker, Speaker {
}
并接受:
void walkAndTalk(final WalkerSpeaker x) {
x.walk();
x.speak();
}
但这对于许多组合来说相当麻烦,并且每个实现都必须继承自 WalkerSpeaker
才能工作!
有没有更好的办法?
最佳答案
您可以使用泛型实现此目的,如下所示
public <T extends Speaker & Walker> void walkAndTalk(T x) {
x.walk();
x.speak();
}
类型参数 T
对两个接口(interface)都是“双界”的,所以本质上 T
将是一个 WalkerSpeaker
除非你不这样做'不必为它写一个单独的接口(interface)。
关于java - 如何使方法接受具有两个接口(interface)的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37837033/