JDK1.5引入新的关键字enum
public enum Color {
Red, White, Blue
}
public class EnumTest {
public static void main(String[] args) {
Color color = Color.Blue;
System.out.println(color);
}
}
枚举提供了两个有用的静态方式values()和valueOf()(将字符串转换成枚举类型)
for(Color c : Color.values())
System.out.println(c);
枚举可以做为方法参数传入
public class EnumTest {
public static void doOp(OpConstant opConstant){
switch(opConstant){
case TURN_LEFT:
System.out.println("向左转");
break;
case TURN_RIGHT:
System.out.println("向右转");
break;
case SHOOT:
System.out.println("射击");
break;
}
}
public static void main(String[] args) {
doOp(OpConstant.SHOOT);
}
}
enum OpConstant{
TURN_LEFT, TURN_RIGHT, SHOOT
}
定义枚举类型时本质上就是在定义一个类别,只不过很多细节由编译器完成了,所以某些程度上,enum关键字的作用就像是class或interface.。
每个枚举类型都继随自java.lang.Enum类,枚举的每个成员默认都是public static final的。
每个枚举的成员其实就是定义的枚举类型的一个实例。换句话说,当定义了一个枚举类型后,在编译时就能确定该枚举类型有几个实例,分别是什么。在运行期间我们无法再使用该枚举类型创建新的实例了,这些实例在编译期间就可以确定下来。
public enum Coin {
penny("hello"), nickel("world"), dime("welcome");
private String value;
public String getValue(){
return value;
}
Coin(String value){
this.value = value;
}
public static void main(String [] args){
Coin coin = Coin.penny;
System.out.println(coin.getValue());
}
}