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

原文地址:https://www.cnblogs.com/shuimuzhushui/p/8206802.html