有人可以解释一下这个班级定义陈述
public class BinarTree<Type extends Comparable<Type>> {...
我完全理解它的目的,但不是语法。据我说它应该只是
public class BinarTree<Type extends Comparable> {...
的含义是什么
<Type extends Comparable<Type>> ?
^^^^
答案 0 :(得分:5)
Comparable
是一个通用接口。这背后的原因是避免在Comparable#compareTo(...)
方法中转换为特定类型。
因此,如果Type extends Comparable<Type>
这意味着Type
将导出带签名的方法
public int compareTo(Type t1)
而不是
public int compareTo(Object o1)
答案 1 :(得分:1)
界面Comparable
本身就是一个模板。
那么你所拥有的是一个带有必须扩展模板的参数的模板。
特别是它必须扩展一个接收扩展类作为参数的模板。
Comparable是实现订单关系并实现方法int compareTo(TYPE o)
的接口的模板。
所以定义一个类是正常的:
class FooBar implements Comparable<FooBar> {...
二叉树不适用于声明的类:
class FooBar implements Comparable<Snafu> {...
那是因为您可以将FooBar
与Snafu
进行比较,但不能相互比较。
答案 2 :(得分:0)
在
public class BinarTree<Type extends Comparable>{...
Type
可以是任意Comparable
,也可以是Comparable<Integer>
或Comparable<OtherType>
。如果这是你想要的,那很好。大多数情况下,我认为你知道你想要比较的是什么,所以专注于Comparable
到Comparable<Type>