Java面向对象设计 - Java枚举类
枚举类型的超类
编译枚举类型时,编译器会创建一个类。
枚举类型可以具有构造函数,字段和方法。枚举类型仅在编译器生成的代码中实例化。
每个枚举类型都隐式地扩展java.lang.Enum类。 Enum类中定义的所有方法都可以与所有枚举类型一起使用。
枚举类
下表列出了在Enum类中定义的方法。
- public final String name()
返回枚举常量的名称。 - public final int ordinal()
返回枚举常量的顺序。 - public final boolean equals(Object other)
如果指定的对象等于枚举常量,则返回true。否则,它返回false。 ==运算符和equals()方法返回相同的结果,当它们用于两个枚举常量。 - public final int hashCode()
返回枚举常量的哈希码值。 - public final int compareTo(E o)
将此枚举常量与指定的枚举常量进行比较。它返回此枚举常量和指定的枚举常量的序数值的差异。 - public final Class getDeclaringClass()
返回声明枚举常量的类的类对象。 - public String toString()
默认情况下,它返回枚举常量的名称,这与name()方法相同。 - public static valueOf(Class enumType,String name)返回指定的枚举类型和名称的枚举常量。
例子
Level lowLevel = Enum.valueOf(Level.class, "LOW")
以下代码显示了如何比较两个枚举常量:
enum Level {LOW, MEDIUM, HIGH, URGENT; }public class Main {public static void main(String[] args) {Level s1 = Level.LOW;Level s2 = Level.HIGH;// s1.compareTo(s2) returns s1.ordinal() - s2.ordinal()int diff = s1.compareTo(s2);if (diff > 0) {System.out.println(s1 + " occurs after " + s2);} else {System.out.println(s1 + " occurs before " + s2);}} }
上面的代码生成以下结果。