枚举类型
在Java编程语言中,枚举类(Enum Class)是一种特殊的类,它用于表示一组固定的常量。这些常量通常用于定义变量的合法取值,比如一周的天数、交通信号灯的颜色等。枚举类提供了一种类型安全的方式来使用这些常量,使得代码更加清晰易懂,同时也减少了出错的可能性。
枚举类型的使用
定义枚举类
public enum Season {ONE("ONE1",11,2),TWO("TWO1",22,3),THREE("THREE3",33,4),FOUR("FOUR",44,5);
}
其中:SPRING,SUMMER,AUTUMN,WINTER都是该枚举类的实例,也就是该类只有四个对象。
枚举类的常用方法
方法 | 说明 |
---|---|
name() | 获取枚举常量名称 |
values() | 获取枚举类型中所有枚举常量 |
ordinal() | 获取枚举常量的序号 |
valueOf(String name) | 根据枚举常量名称获取对应枚举常量 |
compareTo() | 比较枚举常量声明的顺序 |
toString() | 返回枚举常量的字符串表示 |
public enum Season {ONE("ONE1",11,2),TWO("TWO1",22,3),THREE("THREE3",33,4),FOUR("FOUR",44,5);private String namer;private int or;private int c;private Season(String namer,int or,int c){this.namer = namer;this.or = or;this.c = c;}public static void main(String[] args) {System.out.println(Season.ONE);System.out.println(Season.valueOf("ONE"));System.out.println(Season.ONE.name());System.out.println(Season.TWO.ordinal());System.out.println("-------------------");System.out.println(Season.ONE.namer);System.out.println(Season.ONE.or);System.out.println(Season.ONE.c);System.out.println("-------------------");System.out.println(Season.ONE.compareTo(Season.THREE));System.out.println(Season.THREE.compareTo(Season.ONE));}
}
注:
ordinal()返回的是枚举常量在定义时的序号,从0开始。
compareTo()是比较常量在定义时的顺序,所以会出现负数
可以看到输出了3个ONE,这3个方法的区别是:
System.out.println(Season.ONE);
这行代码直接引用了枚举 Season 中定义的 ONE 常量。当这行代码执行时,它会打印出 ONE 这个枚举常量的 toString() 方法返回的字符串。在大多数情况下,枚举的 toString() 方法默认返回的是枚举常量的名称(在这个例子中就是 "ONE")。
System.out.println(Season.valueOf("ONE"));
这行代码使用了 Season 枚举的 valueOf(String name) 方法。这个方法接收一个字符串参数,并返回与该字符串名称匹配的枚举常量。如果找到了匹配的枚举常量,它会返回这个常量;如果没有找到,它会抛出 IllegalArgumentException。在这个例子中,由于 "ONE" 是 Season 枚举中的一个有效常量名称,因此 Season.valueOf("ONE") 会返回 Season.ONE。然后,System.out.println 会打印出 Season.ONE 的 toString() 方法返回的字符串,即 "ONE"。
System.out.println(Season.ONE.name());
这行代码调用了 Season.ONE 的 name() 方法。枚举的 name() 方法返回的是枚举常量的名称,作为一个字符串。在这个例子中,Season.ONE.name() 会返回 "ONE"。因此,这行代码会打印出 "ONE"。