Java学习笔记-枚举类型
枚举类型
枚举类型就是预先定义的一类常量集合,如一周的时间、水果的类型等。需要注意的几点内容如下:
- 定义枚举类时,Java默认继承java.lang.Enum,所以定义的枚举类不能继承其他类型;
- 枚举类中可以包含成员变量、成员函数,但枚举常量的定义再所有field和method之前,并以“;”结束;
- 枚举类的构造函数必须是package-private或private;
- 枚举常量创建的时候都是将值传递到构造函数进行构建的;
- 由于枚举类继承Enum类,默认具有name()(获得枚举常量名)、values()(获得枚举常量数组)、valueOf(String arg)(将arg转为枚举常量)、ordinal()(声明顺序,由0开始)、getClass()、getDeclaringClass()
实例:
1 package enumtest; 2 3 public enum Color { 4 GREEN(2,"绿色"), 5 RED(3, "红色"), 6 BLUE(5, "蓝色"); 7 8 private int num; 9 private String desc; 10 11 Color(int num, String desc) { 12 this.num = num; 13 this.desc = desc; 14 } 15 16 public int getNum() { 17 return this.num; 18 } 19 20 public String getDesc() { 21 return this.desc; 22 } 23 24 public static void main(String[] args) { 25 for (Color color : Color.values()) { 26 System.out.println(color+"---"+color.num+"---"+color.desc); 27 } 28 for (Color color : Color.values()) { 29 System.out.println(color.name()); 30 } 31 System.out.println(Color.valueOf("GREEN").desc); 32 System.out.println(Color.GREEN.ordinal()); 33 System.out.println(Color.GREEN.getClass()); 34 System.out.println(Color.GREEN.getDeclaringClass()); 35 } 36 }
输出结果:
1 GREEN---2---绿色 2 RED---3---红色 3 BLUE---5---蓝色 4 GREEN 5 RED 6 BLUE 7 绿色 8 0 9 class enumtest.Color 10 class enumtest.Color
另外,在集合中还存在java.util.EnumSet<E extends Enum<E>>和java.util.EnumMap<K extends Enum<K>,V>,其中EnumSet可存储不重复的枚举常量,EnumMap的KEY为某枚举类型,它们的存储类型由泛型声明决定。
参考:
https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
这是水木竹水的博客