来源:拉勾教育Java就业集训营
枚举
枚举的基本概念
- 一年中的所有季节:春季、夏季、秋季、冬季。
- 所有的性别:男、女。
- 键盘上的所有方向按键:向上、向下、向左、向右。
- 在日常生活中这些事物的取值只有明确的几个固定值,此时描述这些事 物的所有值都可以一一列举出来,而这个列举出来的类型就叫做枚举类型。
枚举的定义
- 使用public static final表示的常量描述较为繁琐,使用enum关键字来定义枚举类型取代常量,枚举类型是从Java5开始增加的一种引用数据类型。
- 枚举值就是当前类的类型,也就是指向本类的对象,默认使用public static final关键字共同修饰,因此采用枚举类型.的方式调用。
- 枚举类可以自定义构造方法,但是构造方法的修饰符必须是private,默认也是私有的。
public enum DirectionEnum {
//声明本类类型的引用指向本类类型的对象 枚举类型要求所有枚举值必须放在枚举类的最前面
//public static final Diection UP=new Direction("向上");
UP("向上"),DOWN("向下"),LEFT("向左"),RIGHT("向右");
private String dir;
DirectionEnum(String dir) {
this.dir = dir;
}
public String getDir() {
return dir;
}
}
public class EnumTest {
public static void test(DirectionEnum directionEnum){
switch (directionEnum){
case UP:
System.out.println("UP");
break;
case DOWN:
System.out.println("DOWN");
break;
case LEFT:
System.out.println("LEFT");
break;
case RIGHT:
System.out.println("RIGHT");
break;
}
}
public static void main(String[] args) {
DirectionEnum d1=DirectionEnum.UP;
System.out.println(d1.getDir());
test(DirectionEnum.DOWN);
}
}
Enum类的概念和方法
所有的枚举类都继承自java.lang.Enum类,常用方法如下:
static T[] values() | 返回当前枚举类中的所有对象 |
---|---|
String toString() | 返回当前枚举类对象的名称 |
int ordinal() | 获取枚举对象在枚举类中的索引位置 |
static T valueOf(String str) | 将参数指定的字符串名转为当前枚举类的对象,传入的字符串必须在枚举对象中存在,字符串在枚举中不存咋,则抛出IllegalArgumentException //DirectionEnum up = DirectionEnum.valueOf(“UP”); 返回的时和字符串一致的枚举类 |
int compareTo(E o) | 比较两个枚举对象在定义时的顺序,调用的枚举的索引减去传入的枚举参数的索引 |
当打印引用变量时,会自动调用toString()方法
枚举类实现接口的方式
枚举类实现接口后需要重写抽象方法,而重写方法的方式有两种:重写 一个,或者每个对象都重写。
public enum DirectionEnum implements EnumInterface {
//声明本类类型的引用指向本类类型的对象 枚举类型要求所有枚举值必须放在枚举类的最前面
UP("向上"){
@Override
public void show() {
System.out.println("shang");//每个对象都重写
}
},DOWN("向下"){
@Override
public void show() {
System.out.println("xia");
}
},LEFT("向左") {
@Override
public void show() {
System.out.println("zuo");
}
},RIGHT("向右") {
@Override
public void show() {
System.out.println("you");
}
};
// @Override
// public void show() {
// System.out.println("enum-----show:");//重写一个
// }
}