枚举是一种数据类型和预定义常量的集合;枚举的常量(即实例)是公共的、静态的和最终的;常见的例子有:罗盘方向(北、南、东和西);每个枚举实例都是一个类;枚举类可以包含方法,编译器在创建枚举类时会自动添加一些方法,例如:静态方法values()返回一个包含所有常量的数组;toString()方法将一个枚举实例转换为字符串;静态方法valueOf(String)根据给定的字符串获取对应的枚举实例,例如:Level.valueOf("HIGH")获取Level.HIGH;enum隐式继承java.lang.Enum,所以enum不能再继承其他类;枚举无法创建对象(新);publicenumLevel{HIGH,MEDIUM,LOW}publicclassEnumTest{Levellevel;publicEnumTest(Levellevel){this.level=level;}publicvoidtest(){switch(level){caseHIGH:...;休息;案例中等:...;休息;案例低:......;休息;默认:...;}}publicvoiditeration(){for(Levellevel:Level.values()){System.out.println(level);}/*print:HIGHMEDIUMLOW*/}}枚举可以包含字段,每个常量都可以获取这些字段;在定义常量时,字段值必须提供给枚举的构造函数。构造函数的访问修饰符必须是私有的。如果省略,则默认为私有。这是为了防止其他类创建新常量;publicenumLevel{HIGH(3),//调用值为3的构造函数MEDIUM(2),//调用值为2的构造函数LOW(1)//调用值为1的构造函数;//当字段/方法遵循privatefinalintlevelCode时需要分号;Level(intlevelCode){this.levelCode=levelCode;}publicintgetLevelCode(){returnthis.levelCode;}}...级别level=Level.HIGH;System.out.println(level.getLevelCode());//print3enum可以包含字段,每个常量都可以获得这些字段;定义常量时,字段值必须提供给enum的构造函数,并且构造函数的访问修饰符必须是private。如果省略,则默认为private,这是为了防止其他类创建新的常量;publicenumLevel{HIGH(3),//调用值为3的构造函数MEDIUM(2),//调用值为2的构造函数LOW(1)//调用值为1的构造函数;//当字段/方法遵循privatefinalintlevelCode时需要分号;Level(intlevelCode){this.levelCode=levelC颂;}publicintgetLevelCode(){returnthis.levelCode;}}...级别level=Level.HIGH;System.out.println(level.getLevelCode());//为什么print3使用枚举?表达一组固定的常量,应该使用枚举:提高可读性,使代码更简洁;比如在一个switch语句中,我要判断它是哪种颜色。如果枚举类型是枚举类型,我可以直接用RED,BLUE等英文,如果不是枚举类型,就得用整数1,2,3;使用枚举增加了编译时检查以防止拼写错误。比如你用enum,如果少敲一个字母,编译器就会报错。如果多了一个数,编译器就不会报错;enum的初始化是线程安全的,一个enum实例在使用之前不会被单线程构造初始化;参考资料:http://tutorials.jenkov.com/j...
