Java的Enum声明是什么意思?

ATo*_*ras 5 java generics

浏览Java的源代码,我发现了以下声明:

public abstract class Enum<E extends Enum<E>>
Run Code Online (Sandbox Code Playgroud)

应该如何解释?我坚持了......

谢谢.

Jas*_*n S 1

就像奎宁一样!@LES2 走在正确的轨道上。

public abstract class Foo <E extends Foo<E>> 
{

   public static void use(Foo<E> foo) {
      // use foo
   }
}
Run Code Online (Sandbox Code Playgroud)

如果你有以下课程:

public class FooImpl extends Foo<FooImpl> {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

那么这些递归模板给你带来的魔力就是:

  • 模板Foo要求其参数扩展自身(Foo)。
  • 如果参数 classE反过来扩展Foo<E>(由于前一点,它必须扩展),那么您就确保了Foo模板对其子类有“感知”,因为它的子类作为模板参数传递给它
  • 这又意味着Foo该方法可以安全地将this指针向下转换为其派生子类E