枚举是将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,常用来表示一组常数。在Java中,除了不能继承自一个enum之外,我们基本上可将enum看作一个常规的类。
基本用法:
enum Color {
BLUE, WHITE, GREEN
}
public class EnumTest {
public static void main(String[] args) {
//values()方法返回代表枚举中所有值的数组
for (Color color : Color.values()) {
printColor(color);
}
//使用valueOf()或者具体名字获取枚举值
System.out.println(Color.valueOf("BLUE"));
System.out.println(Color.GREEN);
}
public static void printColor(Color color) {
//name()方法返回枚举的名字
System.out.print("name: " + color.name());
//ordinal()方法返回枚举声明的次序
System.out.print(" ordinal: " + color.ordinal());
//在switch中使用枚举
switch (color) {
case BLUE:
System.out.println(" RGB code: #0000FF");
break;
case WHITE:
System.out.println(" RGB code: #FFFFFF");
break;
case GREEN:
System.out.println(" RGB code: #008000");
break;
}
}
}
输出:
name: BLUE ordinal: 0 RGB code: #0000FF
name: WHITE ordinal: 1 RGB code: #FFFFFF
name: GREEN ordinal: 2 RGB code: #008000
BLUE
GREEN
添加属性,构造函数和方法:
enum Color {
// 调用构造函数初始化枚举
// 必须先声明枚举值再声明变量和方法
// 如果有变量或者方法,则最后一个枚举声明后面必须加分号
BLUE("#0000FF"),
WHITE("#FFFFFF"),
GREEN("#008000");
private String rgbCode;
//构造函数,必须为private
private Color(String rgbCode){
this.rgbCode = rgbCode;
}
// 枚举方法
public String getRgbCode(){
return rgbCode;
}
}
public class EnumTest {
public static void main(String[] args) {
for (Color color : Color.values()) {
printColor(color);
}
}
public static void printColor(Color color) {
//调用枚举的方法
System.out.println(color.name() + ": " + color.getRgbCode());
}
}
输出:
BLUE: #0000FF
WHITE: #FFFFFF
GREEN: #008000
静态方法,实例方法与重载:
enum Color {
BLUE {
//覆盖实例方法
public String getRGBCode() {
return "#0000FF";
}
},
WHITE {
public String getRGBCode() {
return "#FFFFFF";
}
},
GREEN;
//实例方法(也可定义抽象方法让具体枚举实现)
public String getRGBCode() {
return "Not Defined.";
}
//静态方法
public static String getColorInfo(){
return "Color: Blue, White, Green.";
}
}
public class EnumTest {
public static void main(String[] args) {
System.out.println(Color.getColorInfo());
for (Color color : Color.values()) {
System.out.println(color.name() + ": " + color.getRGBCode());
}
}
}
输出:
Color: Blue, White, Green.
BLUE: #0000FF
WHITE: #FFFFFF
GREEN: Not Defined.