假设我有一个公开另一个接口ICar集合的接口IPerson。ICar由Car类实现,而IPerson由Person类实现。我希望这个人可以公开一个Car的集合,而不是ICar的集合,但如果不改变IPerson接口,这似乎是不可能的。
有没有其他的解决方案?我想让IPerson公开一个ICar的集合,但我也需要一个实现IPerson的类并公开一个Car的集合。
谢谢
发布于 2012-08-06 20:24:40
我不知道这个解决方案是否适合您的需求,但是根据您使用的语言,您可以使用通用的解决方案来实现这种行为。
例如在java中。
interface IPerson<T extends ICar> {
public T[] getCars();
// ...
}这将确保泛型类型T必须实现ICar,然后在您的Person实现中可以
Class Person implements IPerson<Car> {
Car[] cars;
public Car[] getCars() {
return cars;
}
// ...
}不幸的是,这将不允许您一起查看不同IPersons的集合,因为这不再是IPerson而是IPerson<Car>。
发布于 2012-08-06 20:15:32
如果我理解正确的话,您可以将ICar类型的集合添加到Person类中。因为ICar和Car的集合(几乎)是一样的。
发布于 2012-08-06 20:18:43
在我看来,这是不可能的。
如果IPerson有一个ICars集合,那么Person类也需要接受任何ICar,而不仅仅是具体的Car类。
当然,这是假设允许IPerson的用户添加ICar实例。如果集合是只读的,那么理论上这可能是可能的,但大多数语言都不允许(例如C#不允许)。
https://stackoverflow.com/questions/11828045
复制相似问题