操作枚举类型成员的方法
用户可以将一个枚举类型看作是一个类,它继承于java.lang.Enum类,当定义一个枚举类型时,每一个枚举类型成员都可以看作是枚举类型的一个实例,这些枚举类型成员默认都被final、public、static所修饰,所以当使用枚举类型成员时直接使用枚举类型名称调用枚举类型成员即可。
由于枚举类型对象继承与java.lang.Enum类,所以该类中一些操作枚举类型的方法都可以应用到枚举型中。
枚举类型的常用方法:
(1)values()方法
该方法可以将枚举类型成员以数组的形式返回,也可以通过该方法获取枚举类型的成员。
示例:使用枚举类型中的values()方法获取枚举类型中的成员变量
/**
* 使用枚举类型中的values()方法获取枚举类型中的成员变量
* @author pan_junbiao
*/
public class ShowEnum
{
enum ColorEnum
{
RED, BLUE, GREEN
}
// 循环由values()方法返回的数组
public static void main(String[] args)
{
System.out.println("方式一:");
for (int i = 0; i < ColorEnum.values().length; i++)
{
// 将枚举成员变量打印
System.out.println("枚举类型成员变量:" + ColorEnum.values()[i]);
}
System.out.println("方式二:");
for (ColorEnum c : ColorEnum.values())
{
// 将枚举成员变量打印
System.out.println("枚举类型成员变量:" + c);
}
}
}
枚举类型中的构造方法
在枚举类型中,可以添加构造方法,但是规定这个构造方法必须为private修饰符修饰,必须使枚举中的变量形式与构造方法的形式保持一致。
示例:在枚举类型中,可以添加构造方法。
/**
* 在枚举类型中添加构造方法
* @author pan_junbiao
*/
public class EnumIndexTest
{
enum ColorEnum
{
RED(1, "我是红色"), BLUE(2, "我是蓝色"), GREEN(3, "我是绿色");
private final int value;
private final String description;
private ColorEnum(int value, String description)
{
this.value = value;
this.description = description;
}
public int getValue()
{
return this.value;
}
public String getDescription()
{
return this.description;
}
public static ColorEnum valueOf(int value)
{
switch (value)
{
case 1:
return ColorEnum.RED;
case 2:
return ColorEnum.BLUE;
case 3:
return ColorEnum.GREEN;
default:
return null;
}
}
}
public static void main(String[] args)
{
for (ColorEnum c : ColorEnum.values())
{
System.out.println("枚举成员:" + c + " 值:" + c.getValue() + " 描述:" + c.getDescription());
}
System.out.println("值转换成枚举:" + ColorEnum.valueOf(2));
System.out.println("字符串转换成枚举:" + ColorEnum.valueOf("GREEN"));
}
}
枚举中实现接口
所有枚举类型都继承自java.lang.Enum类,java为单继承,所以枚举不能继承其他类,但是可以实现接口
除了可以使用上述示例的方法定义getDescription()方法获取枚举类型成员变量是的描述之外,还可以将这个getDescription()方法放置在接口中,使枚举类型实现接口,然后使每个枚举类型实现接口中的方法。
示例:在项目中创建d接口和枚举类型的AnyEnum类,在枚举类型AnyEnum类中实现带方法的接口,使每个枚举类型成员实现该接口中的方法。
interface d
{
public int getValue();
public String getDescription();
}
/**
* 枚举中实现接口
* @author pan_junbiao
*/
public enum AnyEnum implements d
{
RED
{
public int getValue()
{
return 1;
}
public String getDescription()
{
return "我是红色";
}
},
BLUE
{
public int getValue()
{
return 2;
}
public String getDescription()
{
return "我是蓝色";
}
},
GREEN
{
public int getValue()
{
return 3;
}
public String getDescription()
{
return "我是绿色";
}
};
public static void main(String[] args)
{
for (AnyEnum c : AnyEnum.values())
{
System.out.println("枚举成员:" + c + " 值:" + c.getValue() + " 描述:" + c.getDescription());
}
}
}
在枚举中定义抽象方法
如果想要在枚举中定义抽象方法,则枚举中所以的变量都必须实现抽象方法
public enum AnyEnum
{
RED
{
public void get(){
System.out.println("RED");
}
},
BLUE
{
public void get(){
System.out.println("BLUE");
}
},
GREEN
{
public void get(){
System.out.println("GREEN");
}
};
public abstract void get();
}
使用枚举类型的优势
枚举类型声明提供了一种用户友好的变量定义方法,枚举了某种数据类型所有可能出现的值。总结枚举类型,它具有以下特点:
(1)类型安全。
(2)紧凑有效的数据定义。
(3)可以和程序其他部分完美交互。
(4)运行效率高。