sdg*_*sdh 23 java oop interface
我有几个接口:
public interface Speaker {
void speak();
}
public inteface Walker {
void walk();
}
Run Code Online (Sandbox Code Playgroud)
我想要一个带有a Speaker和a 实例的方法Walker.
现在,我可以实现另一个接口:
public interface WalkerSpeaker extends Walker, Speaker {
}
Run Code Online (Sandbox Code Playgroud)
并接受:
void walkAndTalk(final WalkerSpeaker x) {
x.walk();
x.speak();
}
Run Code Online (Sandbox Code Playgroud)
但是对于许多组合来说这是非常麻烦的,并且每个实现都必须继承WalkerSpeaker它才能工作!
有没有更好的办法?
Kay*_*man 54
您可以使用泛型来实现此目的,如下所示
public <T extends Speaker & Walker> void walkAndTalk(T x) {
x.walk();
x.speak();
}
Run Code Online (Sandbox Code Playgroud)
type参数T对两个接口都是"双重限制",所以本质上T是a,WalkerSpeaker除了你不必为它编写一个单独的接口.