很抱歉我之前有错误的代码...
所以我有一个界面,看起来像这样:
public interface Player {
void setPartner(Player partner);
}
我有一个接口的实现,看起来像这样:
public class Human implements Player
{
private Human partner;
public void setPartner(Human partner)
{
this.partner = partner;
}
}
所以编译器说我没有实现来自Player的每一个方法,这告诉我我必须精确匹配setPartner方法的参数类型,即使人类是一个Player。有什么好方法可以绕过这个问题,或者以不同的方式实现这个问题吗?
发布于 2012-10-05 07:26:39
你不能有协变参数(如果你通过播放器接口操作你的Human实例会发生什么?),但是你可以使用泛型。
public interface Player<T extends Player<T>> {
void setPartner(T partner);
}
public class Human implements Player<Human> {
private Human partner;
public void setPartner(Human partner) {
this.partner = partner;
}
}
但是,您不能强制实现类使用它自己的类型作为Player的类型参数。
https://stackoverflow.com/questions/12737305
复制相似问题