目录
枚举的定义
枚举的使用
values()的使用
ordinal()的使用
valueOf() 的使用
compareTo()的使用
枚举的优缺点
枚举的定义
枚举是JDK1.5以后引入的。主要用途:将一组常量组织起来,在引入枚举之前表示一组常量通常是使用定义常量的方式:
public static final int RED = 1;public static final int GREEN = 2;public static final int BLACK = 3;
在引入枚举后我们可以将上述的常量举例直接写成类的形式:
public enum TestEnum {RED,GREEN,BLACK;
}
枚举的优点:将常量统一组织起来管理
应用场景:错误状态码、消息类型、颜色的划分.......
本质:我们所定义的枚举类,是java.lang.Enum的子类,虽然在写枚举类的时候未写出其继承Enum类,但是其默认继承了这个类.
枚举的使用
Enum类常用的方法
方法名称 | 描述 |
values() | 以数组形式返回枚举类型的所有成员 |
ordinal() | 获取枚举成员的索引位置 |
valueOf() | 将普通字符串转换为枚举示例 |
compareTo() | 比较两个枚举成员在定义时的顺序 |
通过构造方法,定义出一个枚举类
public enum TestEnum {//枚举对象CAT("猫"),DOG("狗"),BIRD("鸟");public String animal;/*** 枚举的构造方法,默认是私有的* @param animal*/TestEnum(String animal) {this.animal = animal;}
}
values()的使用
values()方法是以数组形式返回枚举类型的成员,定义一个枚举类型的数组接收枚举成员,再将其输出.
public static void main(String[] args) {TestEnum[] testEnums = TestEnum.values();for(TestEnum x : testEnums){System.out.println(x);}}
运行结果
ordinal()的使用
利用ordinal()方法可以获取枚举成员的索引位置,具体使用如下所示:
public static void main(String[] args) {TestEnum[] testEnums = TestEnum.values();for(TestEnum x : testEnums){System.out.println(x + " " + x.ordinal());}}
运行结果
valueOf() 的使用
在定义好枚举类之后,利用valueOf()方法将输入的字符串转换为枚举示例,再对其进行判断
public static void main(String[] args) {Scanner scan = new Scanner(System.in);while(scan.hasNext()) {TestEnum testEnum = TestEnum.valueOf(scan.next());switch(testEnum) {case CAT:System.out.println("猫");break;case DOG:System.out.println("狗");break;case BIRD:System.out.println("鸟");break;default:break;}}}
运行结果
compareTo()的使用
通过对源码的分析,可以发现compareTo()方法的返回值为两个枚举对象的位置差值.
例如:
public static void main(String[] args) {System.out.println(CAT.compareTo(DOG));System.out.println(DOG.compareTo(CAT));System.out.println(BIRD.compareTo(CAT));System.out.println(CAT.compareTo(BIRD));}
运行结果
以下列语句进行分析
System.out.println(CAT.compareTo(BIRD));
在定义枚举类时,CAT是默认下标为0的位置,BIRD是默认下标为2的位置,当两个进行比较时,返回的是CAT下标-BIRD下标,结果为-2;
上述所有的示例代码已上传至gitee代码仓库中:点击查看代码
枚举的优缺点
优点:
1、枚举常量更简单安全;
2、枚举具有内置方法,代码更可观优雅
缺点:
1、不可继承,无法扩展.