java.lang.Object
java.lang.Enum<E>
一、枚举特性:
1、枚举类型enum和类class、接口interface的级别是一样的,关键字enum;
2、定义的每个枚举类型都继承自java.lang.Enum类;
3、枚举中可以定义枚举值(枚举成员)和方法(包括构造方法);
4、枚举成员是public、final、static修饰的,每个枚举成员实际是枚举的实例。
举例1:
在class中调用枚举值。
public enum Color
{
Red,White, Blue;// 定义了3个枚举值。最后可以加分号,也可以不加分号,两个枚举值之间用逗号隔开
}
调用方式为: 枚举名称.成员名称,例如 Color.Red,可以在类中调用枚举值。例如:
public class EnumTest
{
public static void main(String[] args)
{
System.out.println(Color.Blue);
}
}
结果为:Blue
举例2:
利用枚举中定义的静态方法,遍历枚举值。
枚举中给出了2个静态方法:
public static <T extends Enum<T>> T values() 得到枚举值的数组
public static <T extends Enum<T>> T valueOf(Class<T> enumType,String name)
根据values()方法,遍历枚举值:
enum Color
{
Red,Blue,Black,White
}
public class EnumTest
{
public static void main(String[] args)
{
for(Color c : Color.values())
{
System.out.println(c);
}
}
}
结果(打印顺序按照枚举中定义的 顺序):
Red
Blue
Black
White
举例3:
在类中使用switch...case函数调用枚举值,switch后可以跟的数据类型有5种:char、byte、short、int、enum。
enum Operation
{
TURN_LEFT,
TURN_RIGHT,
SHOOT
}
public class EnumTest
{
public static void main(String[] args)
{
EnumTest.operation(Operation.TURN_LEFT);
}
public static void operation(Operation operation)
{
switch(operation)
{
case TURN_LEFT:
System.out.println("左转");
break;
case TURN_RIGHT:
System.out.println("右转");
break;
case SHOOT:
System.out.println("射击");
break;
}
}
}
结果:左转
举例4:
①在枚举中定义构造方法、一般方法。
enum Name
{
LPP("lpp"),FGS("fgs"),LILY("lily");//枚举值为枚举的实例,其表现形式和构造函数一致:枚举构造函数中传入String类型的字符串,则枚举值也应传入String类型的字符串
//LPP,FGS,LILY;//此句出错,是因为不带参数的构造函数已经被重写
private String s;
Name(String s)//此处不允许使用public