java泛型中的无限嵌套

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类型的引用应该参数化.非常好奇.

ysh*_*vit 6

该模式通常是这样interface Foo<T extends Foo<T>>的话Bar implements Foo<Bar>>.

枚举是一个典型的例子.基类是java.lang.Enum<E extends Enum<E>>,而且enum MyEnum实际上是一个class MyEnum extends Enum<MyEnum>