在JDK1.5之前,JAVA可以有两种方式定义新类型:类和接口,对于大部分面向对象编程,有这两种似乎就足够了,但是在一些特殊情况就不合适。例如:想要定义一个Color类,它只能有Red,Green,Blue三种,其他值则是错误,在JDK1.5之后便引入枚举类型。
枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值。
第一种用法:常量
简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。
java代码
public enum Color {
RED, GREEN, BLANK, YELLOW
}
//调用时
public static void main(String[] args) {
System.out.println(Color.RED);
}
第二种用法:switch
JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。
java代码
public enum Color {
RED, GREEN, BLANK, YELLOW
}
//2.用在switch上
//switch语句只支持int cahr enum,使用枚举,能让我们的程序可读性更高
public void changeColor(){
Color color = Color.RED;
switch (color) {
case GREEN:
color = Color.GREEN;
break;
case BLANK:
color = Color.BLANK;
break;
case YELLOW:
color = Color.YELLOW;
break;
}
}
第三种用法:在枚举中添加新方法
public enum Color {
//enum实例
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
//4.覆盖枚举的方法
//覆盖方法
@Override
public String toString() {
return this.index+"_"+this.name;
}
}
还可以在枚举中实现接口等。
参考博文:http://www.iteye.com/topic/1116193