Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。
Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。
示例:
enum Color { RED, GREEN, BLUE; }
接下来我们来看一个一个简单的DEMO示例:
/** * java枚举 */ public class Enum { public static void main(String[] args) { System.out.println(Season.SPRING); System.out.println(Season.SUMMER); System.out.println(Season.AUTUMN); System.out.println(Season.WINTER); } } // 定义的枚举类 enum Season { // 枚举定义的常量对象必须在最前面 SPRING("春天","万物复苏"), SUMMER("夏天","烈日炎炎"), AUTUMN("秋天","硕果累累"), WINTER("冬天","寒冷刺骨"); private String name; private String desc; private Season(String name, String desc) { this.name = name; this.desc = desc; } public String getName() { return name; } public String getDesc() { return desc; } @Override public String toString() { return "Season{" + "name='" + name + '\'' + ", desc='" + desc + '\'' + '}'; } }
输出:
Season{name='春天', desc='万物复苏'}
Season{name='夏天', desc='烈日炎炎'}
Season{name='秋天', desc='硕果累累'}
Season{name='冬天', desc='寒冷刺骨'}
当我们使用enum关键字来开发一个枚举类的时候,默认会继承Eunm类,而且是一个final修饰的类
如果我们使用的是无参构造器,则枚举中可以直接省略小括号
// 枚举定义的常量对象必须在最前面 SPRING("春天", "万物复苏"), SUMMER("夏天", "烈日炎炎"), AUTUMN("秋天", "硕果累累"), WINTER("冬天", "寒冷刺骨"), Other, Shit; Season() { } private Season(String name, String desc) { this.name = name; this.desc = desc; }
我们用具体的程序示例来进行枚举常用方法的演示:
/** * 枚举类方法 */ public class EnumMethod { public static void main(String[] args) { Season autumn = Season.AUTUMN; // 获取当前枚举对象的名称 System.out.println(autumn.name()); // 输出该枚举对象的次序,从0开始 System.out.println(autumn.ordinal()); // 返回所有的枚举对象 Season[] values = Season.values(); for (Season value : values) { System.out.println(value); } // 将字符串转化为枚举对象,要求字符串必须为已有的常量名,否则会爆出一个异常 Season autumn1 = Season.valueOf("AUTUMN"); System.out.println(autumn1); // 比较两个枚举常量,比较的就是编号 // AUTUMN的编号减去SUMMER的编号 System.out.println(Season.AUTUMN.compareTo(Season.SUMMER)); } }
输出:
AUTUMN
2
Season{name='春天', desc='万物复苏'}
Season{name='夏天', desc='烈日炎炎'}
Season{name='秋天', desc='硕果累累'}
Season{name='冬天', desc='寒冷刺骨'}
Season{name='null', desc='null'}
Season{name='null', desc='null'}
Season{name='秋天', desc='硕果累累'}
1
如果使用了enum,则该类不能再继承其他的类,因为它默认继承Enum父类,但是可以进行接口实现