所有枚举类都继承自java.lang.Enum,该类定义了枚举类共用的方法。java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。Enum类常用的方法如下
方法 | 功能描述 |
---|---|
final int ordinal() | 返回枚举实例值在枚举类中的序号,该序号与声明的顺序有关,计数从0开始 |
final int compareTo(enumtype e) | Enum实现了java.lang.Comparable接口,因此可以用于比较 |
boolean equals(Object other) | 比较两个枚举引用的对象是否相等 |
public String toString() | 返回枚举实例的名称,一般情况下无需重写此方法,但当存在更加友好的字符串形式时可以重写此方法 |
public static <T extendsEnum<T>>T valueOf(Class<T> enumType,String name) | 返回指定枚举类型和指定名称的枚举实例 |
这里使用上一章定义的枚举类:
public enum SeasonEnum2 {
//在第一行列出4个枚举实例:春夏秋冬
SPRING("春"),SUMMER("夏"),FALL("秋"),WINTER("冬");
//定义一个属性
private String name;
//构造方法
SeasonEnum2(String name){
this.name = name;
}
//方法
public String toString(){
return this.name;
}
}
public class EnumMethodDemo {
public static void main(String[] args) {
System.out.println("SeasonEnum枚举类的所有实例值以及顺序号:");
for (SeasonEnum2 s : SeasonEnum2.values()){
System.out.println(s + "---" + s.ordinal());
}
System.out.println("----------------------------------");
//声明4个SeasonEnum对象
SeasonEnum2 s1,s2,s3,s4;
//赋值
s1 = SeasonEnum2.SPRING;
s2 = SeasonEnum2.SUMMER;
s3 = SeasonEnum2.FALL;
//调用Enum类的静态方法获取指定枚举类型、指定值的枚举实例
s4 = Enum.valueOf(SeasonEnum2.class,"FALL");
//等价于
//s4 = SeasonEnum2.valueOf("FALL");
//使用compareTo()进行比较
if (s1.compareTo(s2) < 0){
System.out.println(s1 + "在" + s2 + "之前");
}
//使用equals()判断
if (s3.equals(s4)){
System.out.println(s3 + "等于" + s4);
}
//使用==判断
if (s3 == s4){
System.out.println(s3 + "==" + s4);
}
System.out.println("------------------------");
}
}
运行结果:
上述代码中,equals()方法用于比较一个枚举实例值和任何其他对象,但只有这两个对象属于同一个枚举类型且值也相同时,二者才会相等。比较两个枚举引用是否相等时可直接使用“==”。