1、从JDK1.5之后提出的枚举的概念,主要作用是用于定义有限个数对象的结构,枚举就属于多例设计,且其结构比多例设计简单。
2、利用eunm关键字实现枚举的定义
enum Color { //枚举类
RED,GREEN,BLUE ; //实例化对象
}
Color c = Color.RED ; //在主类中获取实例化对象
在进行枚举处理的时候可以利用values()方法获取所有的枚举对象进行输出。在多例中则需要对象数组。
for(Color color : Color.values()) {
System.out.println(color) ;
}
可以在switch中进行枚举项的判断。
3、Enum类
枚举本质相当于一个继承Enum类的类。Enum类中的方法:
protected Enum(String name, int ordinal) 构造 传入名字和序号
public final String name() 普通 获得对象名字
public final int ordinal() 普通 获得对象序号
【重要】解释enum与Enum的区别
enum:是从JDK1.5之后提供的一个关键字,用于定义枚举类。
Enum:是一个抽象类,所以使用enum关键字定义的类就默认继承了此类。系统会自动实现转换处理。
4、定义枚举结构
多例设计模式中构造方法私有化,由此可知,①枚举类中定义的构造方法不能采用非私有化定义(即public权限不能用)。②且在Enum类中枚举对象必须写在首行。③其中可以定义的结构很多,包括:构造方法、普通方法、属性等;④还可以实现接口;⑤另外,在枚举类中还可以直接定义抽象方法,此时必须在每一个枚举对象中都覆写抽象方法。
enum Color { //枚举类
RED("红色"),GREEN("绿色"),BLUE("蓝色") ; //实例化对象
private String title ;
// 构造方法
private Color(String title) {
this.title = title ;
}
//返回信息
public String toString() {
return this.title;
}
}
public class DuoLi {
public static void main(String[] args) {
for(Color color : Color.values()) {
System.out.println(color.ordinal() + "-" + color.name() + "-" + color) ;
}
}
}
5、例如,在枚举对象中覆写枚举类中的抽象方法(意义不大)
RED("红色"){public String getMessage(){return this.toString()}},
(不希望用户随意输入的话考虑枚举)