如果 Enum 声明没有递归部分,Java 中会有什么不同
请参阅Java Enum定义和为什么在java enum中被声明为Enum<E扩展Enum<E>>进行一般性讨论。在这里,我想了解如果Enum类被定义为
public class Enum<E extends Enum>
我正在使用这段代码来测试我的想法:
interface MyComparable<T> {
int myCompare(T o);
}
class MyEnum<E extends MyEnum> implements MyComparable<E> {
public int myCompare(E o) { return -1; }
}
class FirstEnum extends MyEnum<FirstEnum> {}
class SecondEnum extends MyEnum<SecondEnum> {}
有了它,我无法在这种情况下找到任何好处。
PS.我不允许这样做的事实
class ThirdEnum extends MyEnum<SecondEnum> {}
当MyEnum被用递归定义时,a
)不相关,因为对于真正的枚举,你不能这样做,只是因为你不能自己
扩展枚举b)不是真的 - 请在编译器中尝试一下,看看它实际上能够编译没有任何错误
缴费灵。我越来越倾向于相信这里的正确答案是“如果你删除递归部分,什么都不会改变” - 但我就是不敢相信。