波波老师好,关于E extends Comparable<E>..

来源:6-2 二分搜索树基础

慕虎3444883

2018-08-07

我想问一下, Comparable<E>不是一个接口吗?接口也可以用extends继承? 不应该是用implements吗.......我在网上查不到合适的答案,估计我的问题太简单了...  希望波波老师可以给我讲一下!之前在学校学的都是基础语法,没有接触到过通过Comparable这样比较的例子..在网上也看见有人是只实现Comparable的,没有加上泛型.. 看到云里雾里的。。不过大致套路我是理解的,实现这个接口的类视作可以比较的类,之后重写compareTo方法就可在内部自定义比较方式..应该是这样吧

写回答

1回答

liuyubobobo

2018-08-07

在泛型中,一个泛型类型E需要实现一个接口的语法就是使用extends关键字的。


这里的extends,和类继承的extends,虽然是同一个关键字,但是不是一个用法。


如果你写一个类,这个类实现一个接口,相应的语法是:

class A implements Interface


但是,如果你写一个类,这个类需要使用泛型E,同时你要约束泛型E必须是继承某个接口的,语法是:

class A<E extends Interface>

在这里,写implements是报错的。语法是不正确的。


在Java语言中,这个语法叫Bounded Type。Java官方文档对这一语法的介绍可以参考这里:https://docs.oracle.com/javase/tutorial/java/generics/bounded.html


通常,比较全面的Java语言介绍的书籍,应该都会介绍这个语法,比如《Core Java》,比如《Thinking in Java》。刚才我特意确认了一下,这两本Java经典,在介绍泛型时都会介绍这个语法。如果已经度过了Java语言的初级学习阶段,或许可以考虑每天抽点儿时间,读一本这种大厚经典书(不难读,系统介绍语法而已),建立一个更加全面的Java语言的认识体系:)


加油!:)

7
1
慕虎3444883
原来是这样啊,以前学Java都是老师用PPT上课 我只跟着老师走..虽然发了一本砖头一样的书,但是也就刚开学的时候寥寥翻了几页..甚至一度觉得这书都白交钱了,后来发现出现问题只能被别人牵着鼻子走,简单点的语法问题更是查不来答案,现在突然恍然大悟,确实应该把这本书拾起来翻翻啊!谢谢波波老师!
2018-08-07
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程