public abstract class Enum<E extends Enum<E>>
implements Comparable<E>, Serializable {
// All code goes here
}
在上面的代码中,为什么Enum
的类型参数存在递归类型绑定,并且包含Comparable<E>
的部分缺少原因。换句话说,为什么它是Comparable<E>
而不是Comparable<E extends Comparable<E>>
答案 0 :(得分:4)
Enum<E extends Enum<E>>
正在定义E
并限制其类型。
当您到达Comparable<E>
E
时,现在已定义,因此您无需进一步限定它。
Comparable<<E> extends Comparable<E>>
只会很傻。如果您的意思是Comparable<E extends Enum<E>>
,那么您就不需要它,因为已经定义并过滤了E
。此时,您现在通知用户更多关于此类的哪些对象,即它们实现Comparable<E>
接口。
Enum
类型具有递归类型边界,因为它们是递归类型,即enum
自身Enum
(请注意大小写差异)。
答案 1 :(得分:0)
可能不希望将Comparable
的泛型类型参数绑定到特定类型,而Enum
必须绑定到扩展Enum
的类型。
答案 2 :(得分:0)
它也是Comparable<E extends Comparable<E>>
。由于继承,Comparable<E>
与Comparable<E extends Enum<E>>
因E extends Enum<E>
相同,Enum<E>
与Comparable<E>
相同。因此Comparable<E>
与Comparable<E extends Comparable<E>>