一、枚举类型的定义与基本语法
枚举类型(Enum)是Java中的一种特殊数据类型,它定义了一个类别,通过列举所需的常量值来创建枚举类型。
一个基本的枚举类型定义如下:
public enum Weekday {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
其中,Weekday是枚举类型名,其后紧跟的是枚举常量。枚举常量通常采用大写字母命名,并且用逗号隔开。
使用枚举类型定义变量也十分简单,只需要在变量类型处使用枚举类型,再将变量赋值给某个枚举常量即可:
Weekday day = Weekday.MONDAY;
二、枚举类型的常用方法
1. 获取枚举常量数组
使用values()方法可以获取枚举类型的所有枚举常量:
Weekday[] days = Weekday.values();
2. 根据枚举常量名获取枚举常量
使用valueOf(String name)方法可以根据枚举常量名获取对应的枚举常量。注意,这个方法需要传入一个字符串类型的参数,参数值必须是一个枚举常量的名称。
Weekday day = Weekday.valueOf("MONDAY");
3. 实现枚举类的自定义方法
枚举类型也可以像普通类一样拥有自己的属性和方法:
public enum Weekday {
MONDAY("星期一"),
TUESDAY("星期二"),
WEDNESDAY("星期三"),
THURSDAY("星期四"),
FRIDAY("星期五"),
SATURDAY("星期六"),
SUNDAY("星期日");
private String chineseName;
Weekday(String chineseName) {
this.chineseName = chineseName;
}
public String getChineseName() {
return chineseName;
}
}
上述代码中,我们为每个枚举常量添加了一个chineseName属性,并且为Weekday枚举类型定义了一个构造方法,用于初始化chineseName属性。我们也添加了一个getChineseName()方法,用于获取每个枚举常量对应的中文名称。
三、枚举类型的应用场景
1. 常量定义
枚举类型可以用于定义一些固定的常量值,例如星期几、地理方位、性别等等。这可以使程序代码更加容易理解和维护。
2. 状态机实现
枚举类型也可以用于状态机的实现。例如,我们可以使用枚举类型描述一个TCP连接的不同状态:
public enum ConnectionState {
INIT,
SYN_SENT,
SYN_RCVD,
ESTABLISHED,
FIN_WAIT_1,
FIN_WAIT_2,
CLOSE_WAIT,
CLOSING,
LAST_ACK,
TIME_WAIT,
CLOSED
}
使用这种方式可以使状态机的实现更加清晰和简单。
3. 单例模式实现
枚举类型可以用于实现单例模式。由于枚举类型的常量只能被实例化一次,所以可以利用这个特性来保证单例模式的实现。例如:
public enum Singleton {
INSTANCE;
}
这是一种非常简单且线程安全的单例模式实现方式。
原创文章,作者:ZKVP,如若转载,请注明出处:https://www.506064.com/n/145747.html
微信扫一扫
支付宝扫一扫