Jad*_*mas 0 java generics nested-generics
今天我注意到如果你在Java中声明以下内容:
public interface Foo<T extends Foo> {}
Run Code Online (Sandbox Code Playgroud)
然后你可以递归地声明类型的对象:
Foo<Foo<Foo<Foo<Foo<Foo<Foo... ...>>>>>> foo;
Run Code Online (Sandbox Code Playgroud)
并且你永远不会结束它,但你永远无法满足警告:"Foo是一个原始类型.Foo类型的引用应该参数化.非常好奇.
该模式通常是这样interface Foo<T extends Foo<T>>的话Bar implements Foo<Bar>>.
枚举是一个典型的例子.基类是java.lang.Enum<E extends Enum<E>>,而且enum MyEnum实际上是一个class MyEnum extends Enum<MyEnum>