Java:枚举的等价类

Pra*_*har 0 java enums

如果有枚举,

public enum Animal {
   DOG,
   CAT;
}
Run Code Online (Sandbox Code Playgroud)

如果我正确理解枚举,我们可以在等价的类中转换它们,类似于 -

public class Animal {
   private static final DOG = 1;
   private static final CAT = 2;
}
Run Code Online (Sandbox Code Playgroud)

这是正确的表示,还是我在这里遗漏了什么?

谢谢.

Ale*_*exR 6

不完全是.以下是它的样子:

public class Animal extends Enum<Enum<Animal>> {
   public static final DOG = new Animal("DOG", 0);
   public static final CAT = new Animal("CAT", 1);
   private static final Animal[] values = new Animal[] {DOG, CAT};

   private Animal(String name, int ordinal) {super(name, ordinal);}
   public static Animal valueOf(String name) {return Enum.valueOf(Animal.class, name)}
   public Animal[] values() {return values;}
}
Run Code Online (Sandbox Code Playgroud)

java.lang.Enum持有ordinalname提供可以访问它们的方法.