首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用接口集合实现接口

使用接口集合实现接口
EN

Stack Overflow用户
提问于 2012-08-06 20:12:20
回答 3查看 66关注 0票数 1

假设我有一个公开另一个接口ICar集合的接口IPerson。ICar由Car类实现,而IPerson由Person类实现。我希望这个人可以公开一个Car的集合,而不是ICar的集合,但如果不改变IPerson接口,这似乎是不可能的。

有没有其他的解决方案?我想让IPerson公开一个ICar的集合,但我也需要一个实现IPerson的类并公开一个Car的集合。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2012-08-06 20:24:40

我不知道这个解决方案是否适合您的需求,但是根据您使用的语言,您可以使用通用的解决方案来实现这种行为。

例如在java中。

代码语言:javascript
复制
interface IPerson<T extends ICar> {

    public T[] getCars();

   // ...
}

这将确保泛型类型T必须实现ICar,然后在您的Person实现中可以

代码语言:javascript
复制
Class Person implements IPerson<Car> {

   Car[] cars;

   public Car[] getCars() {
        return cars;
   }

   // ...
}

不幸的是,这将不允许您一起查看不同IPersons的集合,因为这不再是IPerson而是IPerson<Car>

票数 1
EN

Stack Overflow用户

发布于 2012-08-06 20:15:32

如果我理解正确的话,您可以将ICar类型的集合添加到Person类中。因为ICar和Car的集合(几乎)是一样的。

票数 0
EN

Stack Overflow用户

发布于 2012-08-06 20:18:43

在我看来,这是不可能的。

如果IPerson有一个ICars集合,那么Person类也需要接受任何ICar,而不仅仅是具体的Car类。

当然,这是假设允许IPerson的用户添加ICar实例。如果集合是只读的,那么理论上这可能是可能的,但大多数语言都不允许(例如C#不允许)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11828045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档