枚举简介
枚举类型可以使用关键字enum来指定,可以将一组值得有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。这是一种非常有用的功能。Enum为一个泛型抽象类,其实现了Comparable接口和Serializable接口。
枚举基本特性
枚举使用enum关键字声明,其values方法可以遍历枚举内部的所有元素,并且严格保持enum中声明时的顺序,因此可以在循环中使用values()返回的数组;其ordinal()方法可以返回元素在enum中的顺序;枚举元素的getDeclaringClass()方法可以返回枚举所属的类型。下面通过一段简单的代码来演示一下。
package date0816.demo1;
/**
* 枚举类型基本特性
* @author zzw922cn
*
*/
enum Direction {East,South,West,North}
public class Test1 {
public static void main(String[] args) {
for(Direction d:Direction.values()) {
System.out.println(d.toString()+"\t ordinal:"+d.ordinal()+"\t Class:"+d.getDeclaringClass().getSimpleName());
}
}
}
程序运行结果:
East ordinal:0 Class:Direction
South ordinal:1 Class:Direction
West ordinal:2 Class:Direction
North ordinal:3 Class:Direction
枚举类型还可以使用静态导入的方法来调用。
下面首先新建一个Direction枚举类,
package date0816.demo1;
/**
* 枚举类,定义四个枚举对象
* @author zzw922cn
*
*/
public enum EnumDirection {
East,South,West,North
}
然后可以静态导入到另外一个类中,可以直接调用枚举元素:
package date0816.demo1;
/**
* 静态导入用于enum
*/
import static date0816.demo1.EnumDirection.*;
public class EnumDirecTest {
EnumDirection ed;
public EnumDirecTest(EnumDirection ed) {
this.ed = ed;
}
@Override
public String toString() {
return "EnumDirecTest is "+ed;
}
public static void main(String[] args) {
System.out.println(new EnumDirecTest(South));
System.out.println(new EnumDirecTest(East));
System.out.println(new EnumDirecTest(North));
}
}
程序输出结果:
EnumDirecTest is South
EnumDirecTest is East
EnumDirecTest is North