创建枚举类型要使用enum关键字,隐含了所创建的类型都是java.lang.Enum类的
子类(java.lang.Enum是一个抽象类)。每一个值都映射到了 protected Enum(String name,int ordinal)
构造函数中。默认情况下,每个值的名称被转换成一个字符串,并且顺序的排列。这里可以自定义构造hans
package li.shi; public class EnumTest { public enum Color{ RED("红色",1),GREEN("绿色",2),BLACK("白色",3),YELLOW("黄色",4); private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } private int index; private Color(String name,int index){ this.name=name; this.index=index; } public static String getName(int index){ for(Color c:Color.values()){ if(c.getIndex()==index){ return c.name; } } return null; } @Override public String toString(){ return this.index+"_"+this.name; } } public class Test1{ } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(Color.getName(Color.RED.getIndex())); System.out.println(Color.RED.toString()); } }
其实枚举就是一个类,只是继承了enum而已,当枚举类被编译之后,就是一个class类型了。里面的
元素其实就是常量。在effective in java中提到,使用枚举来强化单例模式。这是因为,把枚举类型的构造
函数设置为私有的,就不允许被继承了和实例化了,这样就可以保证实例只有一个。单元素的枚举类型,适合
实现单例模式。对于序列化和反射攻击都有帮助。
这里有完整的介绍:http://www.cnblogs.com/happyPawpaw/archive/2013/04/09/3009553.html