一、什么是枚举
枚举是用来解决创建指定个数的东西,关键词是enum。
下面展示 枚举代码片
。
public enum Weeks {
MON , TUS ,WEN , THR , FRI ,STA ,SUN ;
}
下面展示 测试类代码片
。
public class TestWeeks {
public static void main(String[] args) {
System.out.println(Weeks.MON);//输出枚举对象,输出结果是MON
}
}
二、为什么使用枚举
**需求:**一个类只能创建指定个数的指定对象
下面展示 实现的代码片
。
public class TraLightColor {
// 2.创建指定个数的指定对象
public static TraLightColor red = new TraLightColor();
public static TraLightColor green = new TraLightColor();
public static TraLightColor yellow = new TraLightColor();
// 1.构造方法私有化,防止随意new任意多个对象
private TraLightColor(){
}
}
下面展示 测试类代码片
。
public class Demo01 {
public static void main(String[] args) {
//1.创建对象
TraLightColor t1 = TraLightColor.red;
TraLightColor t2 = TraLightColor.green;
TraLightColor t3 = TraLightColor.yellow;
TraLightColor t4 = TraLightColor.yellow;
//2.输出对象的地址值
System.out.println(t1);
System.out.println(t2);
System.out.println(t3);
System.out.println(t4);
}
}
下面是输出结果:
总结
1.构造方法私有化,防止随意new任意多个对象;
2.提供创建指定个数的指定对象的访问点。
3.对比上面枚举的案例,如果使用枚举的方式,代码会更简洁,方便。
可以参考作者的另一篇博客:
小饶学编程之JAVA——设计模式:单例模式(Singleton)
三、枚举的特点
- 1.枚举值,类型是当前的枚举类型
- 2.除此以外,能定义类一样的东西
- 3.构造方法必须是私有化的,如果没有定义,就会默认一个无参的私有的构造方法
- 4.构造可以重载,可以有参数列表,枚举值需要跟构造方法匹配。
- 5.所有的枚举都默认继承了Enum类,从而间接的继承了Object类。
- 6.ordinal记录当前枚举对象在枚举值列表中的索引位置(下标),从0开始。
- 7.name记录的是当前的枚举值对象名。