枚举的概述和作用
枚举是Java中的一种特殊类型。
- 枚举的作用:
是为了做信息的标志和信息的分类。
常量做信息分类和信息标志:
虽然可以实现可读性,但是入参不受限制!!!
Java建议做信息标志和信息分类应该使用枚举实现:最优雅的方式。
可以实现可读性,而且入参受限制,不能乱输入!!!
- 定义枚举的格式:
修饰符 enum 枚举名称{
第一行都是罗列枚举实例的名称。
}
- 枚举类的编译以后源代码:
public final class Season extends java.lang.Enum<Season> {
public static final Season SPRING = new Season();
public static final Season SUMMER = new Season();
public static final Season AUTUMN = new Season();
public static final Season WINTER = new Season();
public static Season[] values();
public static Season valueOf(java.lang.String);
}
-
枚举的特点:
1.枚举类是用final修饰的,枚举类不能被继承! 2.枚举类默认继承了java.lang.Enum枚举类。 3.枚举类的第一行都是常量,存储都是枚举类的对象。 4.枚举类的第一行必须是罗列枚举类的实例名称。
所以:枚举类相当于是多例设计模式。
-
示例:
enum Oritation{
UP , DOWN , LEFT , RIGHT ;
}
public class EnumDemo02 {
public static void main(String[] args) {
move(Oritation.RIGHT); // 方法入参只能输入枚举的4个类型!
}
// 提供一个方法控制玛丽的方向。
// 上下左右
public static void move(Oritation o){
switch (o){
case UP:
System.out.println("让🐎往👆蹦~~~~");
break;
case DOWN:
System.out.println("让🐎往👇蹦~~~~");
break;
case LEFT:
System.out.println("让🐎往👈蹦~~~~");
break;
case RIGHT:
System.out.println("让🐎往👉蹦~~~~");
break;
}
}
- 拓展:枚举的API-- values(),ordinal()
/**
拓展:枚举的API
*/
public class EnumDemo03 {
public static void main(String[] args) {
Season03 s = Season03.SPRING;
System.out.println(s); // SPRING
System.out.println("---------------");
//1. 获取当前类的全部枚举实例 : public static Season[] values()
Season03[] ss = Season03.values();
for(int i = 0 ; i < ss.length ; i++ ){
Season03 s1 = ss[i];
System.out.println(s1);
}
//2. 获取枚举对象的索引: ordinal()
Season03 s2 = Season03.AUTUMN;
System.out.println(s2.ordinal()); // 2
}
}
enum Season03{
SPRING, SUMMER , AUTUMN, WINTER ;
}