Enum实现Comparable <e>为什么不Comparable <enum <e>&gt;

时间:2016-09-05 11:57:58

标签: java generics

通常,当类实现Comparable时,类型变量T是类名,例如,String实现Comparable<String>Long实现{ {1}},Comparable<Long>实施Date,然后为什么Comparable<Date>实施Enum而不是Comparable<E>

2 个答案:

答案 0 :(得分:2)

E已经是Enum<E>

它不能Enum<E>,因为它意味着任何Enum<E>具有可比性,只有E是可接受的。

答案 1 :(得分:0)

这是因为enum类被定义为

public abstract class Enum<E extends Enum<E>> ...

因此E已经是Enum<E>,并且实施Comparable<E>已经隐含了Enum部分。

您可能希望查看this question以获取有关它以递归方式声明的原因的更多信息(因为它确实会伤害大脑)。