我以为我很了解Java泛型,但后来我在java.lang.Enum中遇到了以下内容:
class Enum<E extends Enum<E>>
Run Code Online (Sandbox Code Playgroud)
有人可以解释如何解释这个类型参数?用于提供可以使用类似类型参数的其他示例的加分点.
可能重复:
java Enum定义
更好的公式化问题,不被认为是重复的:
如果Enum声明没有递归部分,那么在Java中会有什么不同
如果语言设计师只使用Enum <E extends Enum>会对语言产生什么影响呢?
现在唯一的区别就是有人会写作
A extends Enum<B>
但是因为在java中不允许扩展枚举仍然是非法的.我也在想有人为jvm提供一个字节码,将字符串定义为扩展枚举 - 但是泛型不会影响它,因为它们都被删除了.
那么宣言的重点是什么呢?
谢谢!
编辑 为简单起见,让我们来看一个例子:
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> {}
这个类结构有什么问题?可以做些什么"MyEnum <E扩展MyEnum <E >>"会限制?
这些通用之间是否存在任何实际差异
public class SelfBounded <T extends SelfBounded<T>>{}
Run Code Online (Sandbox Code Playgroud)
还有这个
public class SelfBounded <T extends SelfBounded>{}
Run Code Online (Sandbox Code Playgroud)
?
如果是,那我该如何观察呢?