1.基本enum特性:关键字enum可以将一组具名的值的有限集合创建为一种新的类型,这些具名的值为该枚举类型的实例对象。valus()方法返回enum实例的数组;name()方法输出枚举对象的名字;orfinal()方法输出该枚举对象的次序,从0开始编号;valueOf()方法将字符串转换成枚举对象,要求字符串必须是已有的常量名,否则会报错;compareTo()方法比较两个枚举常量,比较的是编号。
public static void main(String[] args) { Season autumn = Season.AUTUMN; System.out.println(autumn.name()); System.out.println(autumn.ordinal()); Season[] values = Season.values(); for (Season season : values) { System.out.println(season); } Season autumn1 = Season.valueOf("AUTUMN"); System.out.println(autumn1); System.out.println(Season.AUTUMN.compareTo(Season.SUMMER)); } } 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 + '\'' + '}'; } }
2.将静态导入用于enum:使用static import能够将enum实例的标识符带入房前的命名空间,所有无需再用enum类型来修饰enum实例。
enum Season { SPRING, SUMMER, AUTUMN, WINTER } public class Test3 { Season name; public Test3(Season name) { this.name = name; } @Override public String toString() { return "Test3 " + "name=" + name; } public static void main(String[] args) { System.out.println(new Test3(SPRING)); System.out.println(new Test3(SUMMER)); System.out.println(new Test3(AUTUMN)); } }
3.向enum中添加新方法:不能继承自一个enum之外,可以把enum看作一个常规类。可以在枚举类中定义成员变量、构造方法、方法。
public enum Season { SPRING("温暖"), SUMMER("炎热"), AUTUMN("凉爽"), WINTER("寒冷"); private String desc; Season(String desc) { this.desc = desc; } public String getDesc() { return desc; } public static void main(String[] args) { for (Season season : Season.values()) { System.out.println(season.getDesc()); } } }