开发者社区> 问答> 正文

Java中具有可比接口的类型边界

在JDK 11中,我正在创建一个名为“ Collection”的通用类,以便为type参数提供的任何类型都必须实现Comparable接口。当前的类声明如下:

public class Collection <T extends Comparable<T>> 

最初我认为类声明应该是这样的:

public class Collection <T implements Comparable<T>> 

但是JDK不喜欢那样。

所以我的问题是为什么类声明是前者而不是后者。我们不扩展类并实现接口吗?

问题来源:Stack Overflow

展开
收起
montos 2020-03-25 17:51:17 393 0
1 条回答
写回答
取消 提交回答
  • 关于边界声明的语法,在Java 5中添加泛型的语言架构师面临以下选择:

    • 镜像声明结构(带有分隔符extends和implements界限),或者
      • 选择一种形式为上界类型(例如,T extends Foo,T <: Foo等等) 在声明类型变量的时候,后者(明智地是IMO)被认为是更务实的选择,即超类型是碰巧的类还是接口都不重要,并且语法繁琐,需要客户端使用恰恰是正确的关键字(并且会使诸如 甚至更丑陋的复合边界)被视为只是使事情变得更难使用而对代码的编写者或读者没有实际好处。

    这种决定通常是随着语言的发展而做出的,严格地与先例保持一致只会使事情变得困难而没有任何好处,因此语言设计人员有时(在仔细考虑两种选择的利弊之后)选择打破先例,为了更好的结果。

    回答来源:Stack Overflow

    2020-03-25 17:51:52
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载