【笔记】Java的枚举

前言

Java的枚举学习笔记

定义枚举类

  • 枚举类和普通类一样可以定义属性和方法
  • 枚举类中还可以定义枚举常量,枚举常量必须在枚举类的第一行定义,多个枚举常量用,分隔,以;结尾
  • 枚举类名又被称为枚举名,枚举常量又被称为枚举值
1
2
3
4
5
6
7
8
9
enum 枚举类名 {
枚举常量名1, 枚举常量名2;

数据类型 属性名;

数据类型 方法名() {
...
}
}
  • 如果枚举类中只定义了枚举常量,可以省略;
1
2
3
enum 枚举类名 {
枚举常量名1, 枚举常量名2
}

枚举类中定义构造方法

  • 枚举类中的构造方法一定是私有的
1
2
3
4
5
6
7
enum 枚举类名 {
枚举常量名1, 枚举常量名2;

private 枚举类名() {
...
}
}
  • 枚举类中定义的构造方法可以省略private关键字
1
2
3
4
5
6
7
enum 枚举类名 {
枚举常量名1, 枚举常量名2;

枚举类名() {
...
}
}
  • 如果枚举类的构造方法定义了形参列表,则定义枚举常量时一定要传递实参列表
1
2
3
4
5
6
7
enum 枚举类名 {
枚举常量名1(实参列表), 枚举常量名2(实参列表);

枚举类名(形参列表) {
...
}
}

定义枚举常量时重写枚举类的方法

重写普通方法

1
2
3
4
5
6
7
8
9
10
11
12
13
enum 枚举类名 {
枚举常量名1() {
@Override
public void 方法名() {
...
}
},
枚举常量名2();

public void 方法名() {
...
}
}

重写抽象方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
enum 枚举类名 {
枚举常量名1() {
@Override
public void 抽象方法名() {
...
}
},
枚举常量名2() {
@Override
public void 抽象方法名() {
...
}
};

public abstract void 抽象方法名();
}

获取枚举对象

1
枚举类名 枚举对象名 = 枚举类名.枚举常量名;

类方法

字符串转换为枚举对象

1
枚举类名 枚举对象名 = 枚举类名.valueOf("枚举常量名");

完成