Java基础=>分析Java1.5新特性-枚举
程序员文章站
2024-03-17 18:02:46
...
一.什么是枚举?
在java编程过程中,我们通常需要定义一些固定数量的常量,在jdk1.5
以前,通常的做法是定义一个静态常量类
,但自jdk1.5后,java引入了枚举(关键字enum
,全称为 enumeration,值类型),在枚举中,我们可以把相关的常量分组到一个枚举类型里
,枚举也比常量类有更多灵活的用法,使用枚举,可以有效的提高代码的整洁性、可读性、可维护性等等
二.枚举的创建
- 将类用 关键字 `enum` 修饰
- 枚举类中的数据每个枚举对象使用`,`隔开,`最后一个枚举对象`使用`;`结束。
- 可以在枚举类中声明属性, 声明的数据是类中所有枚举对象共有的
- 可以在枚举类中自定义方法:如果根据枚举对象的某个属性查询所属枚举
三.枚举常用场景
- 作为普通的常量使用,如星期、季节、颜色、城市等等;通常配合switch语句使用。
//周一到周天枚举
public enum WeekEnum {
MON,TUES,WED,THURS,FRI,SAT,SUN;
}
//jdk1.7开始switch语句开始支持String类型,而jdk1.6之前只支持int,char,enum类型,使用枚举的话,能使代码的可读性大大增强
public class TestEnum {
public static void main(String[] args) {
WeekEnum week = WeekEnum.TUES;
switch (week) {
case MON:
System.out.println("星期一");
break;
case TUES:
System.out.println("星期二");
break;
case WED:
System.out.println("星期三");
break;
case THURS:
System.out.println("星期四");
break;
case FRI:
System.out.println("星期五");
break;
case SAT:
System.out.println("星期六");
break;
case SUN:
System.out.println("星期天");
break;
}
}
}
- 作为普通的常量使用,如星期、季节、颜色、城市等等;通常配合switch语句使用。
enum AddressEnum {
HUNAN("湖南", "1101"),
GUANGDONG("广东", "1102"),
SICHUANG("四川", "1103"),
JIANGXI("江西", "1104"),;
private String address;
private String code;
private AddressEnum(String address, String code) {
this.address = address;
this.code = code;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public static String getAddressName(String addressCode){
for(AddressEnum addressEnum : AddressEnum.values()){
if(addressEnum.getCode().equals(addressCode)){
return addressEnum.getAddress();
}
}
return null;
}
public static String getAddressCode(String addressName){
for(AddressEnum addressEnum : AddressEnum.values()){
if(addressEnum.getAddress().equals(addressName)){
return addressEnum.getCode();
}
}
return null;
}
public static void main(String[] args) {
System.out.println(AddressEnum.GUANGDONG.getAddress());
System.out.println(AddressEnum.GUANGDONG.getCode());
System.out.println( AddressEnum.getAddressCode("湖南"));
System.out.println( AddressEnum.getAddressName("1102"));
}
}
//打印
//广东
//1102
//1101
//广东
四.enum 对象的常用方法介绍
方法 | 描述 |
---|---|
int compareTo(E o) | 比较此枚举与指定对象的顺序。 |
Class getDeclaringClass() | 返回与此枚举常量的枚举类型相对应的 Class 对象。 |
String name() | 返回此枚举常量的名称,在其枚举声明中对其进行声明。 |
int ordinal() | 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。 |
String toString() | 返回枚举常量的名称,它包含在声明中。 |
static <T extends Enum> T valueOf(Class enumType, String name) | 返回带指定名称的指定枚举类型的枚举常量。可以实现将普通字符串转换为枚举实例 |
values | 该方法可以将枚举类型成员以数组的形式返回 |