• 枚举


    假如我们需要给学生打成绩而且只能是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。枚举类也可以实现接口,或者继承抽象类。

  • 相关阅读:
    关于如何使`(a === 1 && a === 2 && a === 3)`返回`true`问题的思考
    选择适合的类型判断方式
    this的指向问题
    MarkDown基础语法记录
    快速掌握vuex状态管理
    自己如何手动实现一个isNaN的方法
    移动端webapp使用flex布局解决底部导航被手机键盘顶起
    swiper文字内容超出一屏的时候如何实现区域滚动不翻页
    css3动画如何实现停止以后停留在最后一帧动画
    检测任意数据类型
  • 原文地址:https://www.cnblogs.com/Vamps0911/p/10766430.html
Copyright © 2020-2023  润新知