首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么是<?扩展interface>而不是<?实现interface>

为什么是<?扩展interface>而不是<?实现interface>
EN

Stack Overflow用户
提问于 2014-10-13 11:19:55
回答 4查看 162关注 0票数 2

我有以下代码:

代码语言:javascript
复制
ArrayList<? extends IValues> valuesList

IValuesinterface。列表中充满了implement IValues接口的类/对象。我确实理解这个列表中每一个对象的概念,它们必须履行他们实现的接口所规定的契约。为什么java语言不这样做:

代码语言:javascript
复制
ArrayList<? implements IValues> valuesList

?这对用户来说会更清楚,不是吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-10-13 11:22:03

在这种情况下,使用哪个关键字的语法选择很可能是任意的。它只是一个标记,表示类型参数必须是IValues的一个子类型。这是用extends编写的,用于继承,implements用于接口。

就我个人而言,我发现最好为类和接口使用一个关键字,而不是两个不同的关键字。extends是一个很好的选择,特别是在接口中也使用了它:

代码语言:javascript
复制
interface ISpecialValues extends IValues {
    ...
}
票数 4
EN

Stack Overflow用户

发布于 2014-10-13 11:21:47

这就是泛型是如何用Java设计的。

请注意,这里也使用了super关键字,但它的含义与外部泛型完全不同。

票数 7
EN

Stack Overflow用户

发布于 2014-10-13 11:30:28

extendsimplements几乎不适用,因为以前的Java5所熟悉的含义在这两种情况下都不适用。类比的含义实际上是巧合的,迫于语言设计者的强烈限制,不引入新的关键词。

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

https://stackoverflow.com/questions/26338775

复制
相关文章

相似问题

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