通常,当一个类实现Comparable时,类型变量T就是类名,例如String实现Comparable<String>,Long实现Comparable<Long>,Date实现Comparable<Date>,那么为什么Enum实现<代码>D9而不是<代码>D10?
发布于 2016-09-05 20:00:36
E已经是一个Enum<E>了。
它不能是Enum<E>的原因,因为这意味着任何Enum<E>都是可比较的,只有E是可接受的。
发布于 2016-09-05 20:01:42
这是因为enum类被定义为
public abstract class Enum<E extends Enum<E>> ...因此,E已经是一个Enum<E>,让它实现Comparable<E>已经隐式地在其中包含了Enum部件。
您可能希望查看this question,以进一步了解为什么以这种递归方式声明它(因为它确实会损害大脑)。
https://stackoverflow.com/questions/39330115
复制相似问题