波波老师好,关于E extends Comparable<E>..
来源:6-2 二分搜索树基础
慕虎3444883
2018-08-07
我想问一下, Comparable<E>不是一个接口吗?接口也可以用extends继承? 不应该是用implements吗.......我在网上查不到合适的答案,估计我的问题太简单了... 希望波波老师可以给我讲一下!之前在学校学的都是基础语法,没有接触到过通过Comparable这样比较的例子..在网上也看见有人是只实现Comparable的,没有加上泛型.. 看到云里雾里的。。不过大致套路我是理解的,实现这个接口的类视作可以比较的类,之后重写compareTo方法就可在内部自定义比较方式..应该是这样吧
1回答
-
在泛型中,一个泛型类型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语言的认识体系:)
加油!:)
712018-08-07
相似问题