提供我有一个像这样的界面:
public interface Replicateable {
void replicate(T entity);
}
另一个扩展它
// here Identifiable is just another interface
public interface Entity extends Identifiable, Replicateable {
//some declarations here
}
在这条链的最后,我想要
public class ConcreteEntity implements Entity {
@Override
public void replicate(ConcreteEntity entity) {
// here goes some logic turning current entity
// to a replica of a passed one
}
}
除了使Entity接口通用之外,还有什么方法可以实现?我宁愿避免这种情况.
所以我试图
1.保持原样,这是行不通的,因为copy()实现只需要一个Entity参数,而不是一个具体的参数
2.在实体类中添加可复制权限
public class ConcreteEntity implements Entity, Replicateable { ... }
这给了我“ Replicateable”不能用不同的类型参数继承:“ Entity”和“ ConcreteEntity”(这是可以理解的,为什么它不起作用).
3.覆盖Entity接口中的copy()(也没有结果,甚至不确定它是否有意义).
4.使一个replicate()成为泛型而不是Replicateable本身(不确定如何正确设置)
将不胜感激任何建议,以使其正确.