枚举

假如我们需要给学生打成绩而且只能是A,B,C,D四种类型,我们用传统方法和枚举分别实现

class Grade{
    
    private Grade(){
        
    }
    
    public static final Grade A = new Grade();
    public static final Grade B = new Grade();
    public static final Grade C = new Grade();
    public static final Grade D = new Grade();
    
}

enum Grade1{
    A,B,C,D
}

这样我们的Grade就只能取A,B,C,D

下面来说一下自带构造函数的枚举,同样是Grade,如果我们想知道每个成绩所代表的分数该怎么做呢?

 1 enum Grade{
 2     
 3     A("100-90"),B("90-80"),C("80-70"),D("70-60");
 4     
 5     private String value;
 6     
 7     private Grade(String value){
 8         this.value = value;
 9     }
10     
11     public String get(){
12         return this.value;
13     }
14     
15 }
16 
17 public class Demo2 {
18 
19     @Test
20     public void demo(){
21         Grade g = Grade.A;
22         System.out.println(g.get());
23     }
24     
25 }

枚举类的抽象方法使用

 1 enum Grade{
 2     
 3     A("100-90"){
 4         public String get2(){
 5             return "优";
 6         }
 7     },
 8     B("90-80"){
 9         public String get2(){
10             return "良";
11         }
12     },
13     C("80-70"){
14         public String get2(){
15             return "一般";
16         }
17     },
18     D("70-60"){
19         public String get2(){
20             return "差";
21         }
22     };
23     
24     private String value;
25     
26     private Grade(String value){
27         this.value = value;
28     }
29     
30     public String get(){
31         return this.value;
32     }
33     
34     public abstract String get2();
35     
36 }

总结一下枚举类的使用:枚举相当于在限制类对象类型的一种简化,枚举类也是一种特殊形式的Java类,枚举类中声明的每一个枚举值代表枚举类的一个实例对象,与java中的普通类一样,在声明枚举的时候,也可以声明属性,方法和构造方法,当然构造方法必须是private。枚举类也可以实现接口,或者继承抽象类。

原文地址:https://www.cnblogs.com/Vamps0911/p/10766430.html