enum是一个关键字,使用enum定义的枚举类本质上就相对于一个类继承了Enum这个抽象类而已。
所以说enum定义的枚举结构实际上就是一个多例类!
对比下面两个代码:
一:描述动物的多例类:
class Animal{
private String title;
public static final int DOG_FLAG = 1;
public static final int CAT_FLAG = 2;
public static final int PANDA_FLAG =3;
private static final Animal DOG = new Animal("dog");
private static final Animal CAT = new Animal("cat");
private static final Animal PANDA = new Animal("panda");
public Animal(String title) {
this.title = title;
}
public static Animal getInstance(int a){
switch (a){
case DOG_FLAG:
return DOG;
case CAT_FLAG:
return CAT;
case PANDA_FLAG:
return PANDA;
default:
return null;
}
}
@Override
public String toString() {
return "Animal{" +
"title='" + title + '\'' +
'}';
}
}
public class Day17_2 {
public static void main(String[] args) {
System.out.println(Animal.getInstance(Animal.PANDA_FLAG));
}
}
二:上面的代码基于枚举开发,只需要8行代码:
enum Animal{
DOG,CAT,PANDA
}
public class Day17_2{
public static void main(String[] args) {
System.out.println(Animal.DOG);
}
}
实际上枚举就是一种高级的多例设计模式!