一、枚举类型的基本概念
枚举类型是Java中一个非常重要的数据类型,它可以允许我们将一组常量打包成一个单独的类型,并且可以保证常量的类型一致性以及安全性。枚举类型是Java 1.5版本中引入的新特性,它为我们解决了很多使用常量的问题。
枚举类型是一种特殊的类,它可以包含常量、变量、方法和构造函数等元素。枚举类型中的每一个元素都称之为一个枚举常量,每个枚举常量都是该枚举类型的一个实例。枚举常量必须是该枚举类型中声明过的,如果枚举类型中没有声明过该常量,则会抛出编译时错误。
//定义一个简单的枚举类型
public enum Weekday {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
二、枚举类型的常用方法
枚举类型提供了一些常用的方法,可以方便我们处理枚举类型的数据。
1. values()
values()方法返回枚举类型中的所有枚举常量,它返回的数组的顺序与声明枚举常量时的顺序一致。
//使用values()方法获取枚举类型中的所有枚举常量
Weekday[] weekdays = Weekday.values();
for (Weekday weekday : weekdays) {
System.out.println(weekday);
}
2. valueOf()
valueOf()方法根据指定的字符串返回相应的枚举常量,如果字符串与枚举类型中的常量不匹配,则会抛出IllegalArgumentException异常。
//使用valueOf()方法获取枚举类型中指定的枚举常量
Weekday monday = Weekday.valueOf("MONDAY");
System.out.println(monday);
3. name()
name()方法返回枚举常量的名称,与声明枚举常量时使用的名称一致。
//使用name()方法获取枚举常量的名称 Weekday tuesday = Weekday.TUESDAY; System.out.println(tuesday.name());
三、枚举类型的高级使用
除了基本的使用方法,枚举类型还有一些比较高级的用法。
1. 枚举类型实现接口
枚举类型同样可以实现一个或多个接口,从而为每个枚举常量提供不同的实现,这样可以保证每个枚举常量的功能都不一样。
//定义一个实现接口的枚举类型
public enum Weekday implements Runnable {
MONDAY("星期一") {
@Override
public void run() {
System.out.println("今天是" + this.getDesc() + ",去上班啦!");
}
},
TUESDAY("星期二") {
@Override
public void run() {
System.out.println("今天是" + this.getDesc() + ",努力工作中!");
}
},
WEDNESDAY("星期三") {
@Override
public void run() {
System.out.println("今天是" + this.getDesc() + ",想想周末的计划吧!");
}
},
THURSDAY("星期四") {
@Override
public void run() {
System.out.println("今天是" + this.getDesc() + ",加油加油!");
}
},
FRIDAY("星期五") {
@Override
public void run() {
System.out.println("今天是" + this.getDesc() + ",周末就快到了!");
}
},
SATURDAY("星期六") {
@Override
public void run() {
System.out.println("今天是" + this.getDesc() + ",休息一下!");
}
},
SUNDAY("星期日") {
@Override
public void run() {
System.out.println("今天是" + this.getDesc() + ",再多休息一会儿!");
}
};
private String desc;
Weekday(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
}
2. 枚举类型的构造函数
枚举类型的构造函数只能使用private修饰符,这是为了防止在枚举类型中新建枚举常量。同时,枚举类型的构造函数可以接受一些参数,从而为每个枚举常量提供不同的属性值。
//定义一个带有参数的枚举类型
public enum Size {
SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private String abbreviation;
Size(String abbreviation) {
this.abbreviation = abbreviation;
}
public String getAbbreviation() {
return abbreviation;
}
}
3. 枚举类型定义抽象方法
枚举类型可以定义抽象方法,并要求每个枚举常量必须实现该方法,从而让每个枚举常量都具备一些共性的方法。
//定义一个抽象方法的枚举类型
public enum Gender {
MALE {
@Override
public void printGender() {
System.out.println("Male");
}
},
FEMALE {
@Override
public void printGender() {
System.out.println("Female");
}
};
public abstract void printGender();
}
四、总结
枚举类型是Java中一个非常实用的数据类型,它可以有效地处理常量的问题,使得代码更加易读易懂。枚举类型的基本用法非常简单,但是在一些特殊情况下,枚举类型还可以做出一些更加高级的操作,为我们的代码提供更多的功能和灵活性。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/159584.html
微信扫一扫
支付宝扫一扫