主要观点总结
本文介绍了Java中的枚举类型,包括定义、构造器、枚举类成员、values()和valueOf(String name)方法的使用,以及枚举在日常开发中的应用。文章强调枚举类型可以消除部分if-else语句,增强类型约束,并在switch语句和单例模式中有广泛应用。
关键观点总结
关键观点1: 枚举的定义和特性
枚举是一种被命名的整型常数的集合,可以定义具有特定行为的集合。
关键观点2: 构造器的使用
枚举类的构造器默认是private的,并且只能使用private构造器来创建枚举实例。
关键观点3: 枚举类成员
枚举类可以拥有成员变量、实例方法和静态方法等,就像普通类一样。
关键观点4: values()和valueOf(String name)方法
每个枚举类都有values()方法返回所有枚举常量,以及valueOf(String name)方法通过名字返回对应的枚举常量。
关键观点5: 枚举的应用
枚举可以用于类型约束、switch语句、实现接口以及单例模式中。通过枚举可以消除if-else语句,增强代码的可读性和可维护性。
正文
❝
hello hello hello hello hello hello hello
❞
构造函数共执行了 7 次,正好对应类中枚举项的数量。其实此类的枚举项的创建,就相当于其他类调用无参构造器 new 出来的对象,也就是这个枚举类创建了7次实例,所以输出了7个 hello。
除了无参构造器,枚举类也有有参构造器。
public enum Week {
SUNDAY(7), MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6);
Week(int weekNum){
System.out.println(weekNum);
}
}
这次将会输出:
❝
7 1 2 3 4 5 6
❞
枚举类成员
枚举类和正常类一样,也可以有成员变量、实例方法、静态方法等。
public enum Week {
SUNDAY(7), MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6);
private int weekNum;
Week(int weekNum){
this.weekNum = weekNum;
}
public int getWeekNum() {
return weekNum;
}
}
使用:
public class Test {
public static void main(String[] args) {
Week w = Week.FRIDAY;
System.out.println(w.getWeekNum());
}
}
输出:
❝
5
❞
枚举类中还可以有
抽象方法
。
public enum Week {
SUNDAY(){
@Override
public void getWeekNum() {
System.out.println(7);
}
},
MONDAY() {
@Override
public void getWeekNum() {
System.out.println("星期一");
}
},
TUESDAY(){
@Override
public void getWeekNum() {
System.out.println("礼拜二");