zoukankan      html  css  js  c++  java
  • java中的枚举类

    • 什么是枚举、枚举类?

    枚举是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。例如:一周只有7天。

    枚举类就是一个类有多个实例,但不是无限个数的实例。

    • 创建无参构造对象的枚举类

    (1)JDK1.5前:

    public class Weekday {
        public static final Weekday MON = new Weekday();
        public static final Weekday TUE = new Weekday();
        public static final Weekday WED = new Weekday();
        public static final Weekday THU = new Weekday();
        public static final Weekday FRI = new Weekday();
    
        private Weekday(){}
    }

    创建对象:

    public static void main(String[] args) {
            Weekday mon = Weekday.MON;
            Weekday tue = Weekday.TUE;
            Weekday wed = Weekday.WED;
            Weekday thu = Weekday.THU;
            Weekday fri = Weekday.FRI;
        }

    (2)JDK1.5后:

    public enum Weekday {
        MON,TUE,WED,THU,FRI;
    }

    创建对象和上面的方法一样。

    • 创建有参构造对象的枚举类

    (1)JDK1.5前:

    public class Weekday {
    
        public static final Weekday MON = new Weekday("星期一");
        public static final Weekday TUE = new Weekday("星期二");
        public static final Weekday WED = new Weekday("星期三");
        public static final Weekday THU = new Weekday("星期四");
        public static final Weekday FRI = new Weekday("星期五");
    
        private String name;
    
        private Weekday(String name){
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    }

    创建对象(和上面一样):

    public class Demo1 {
        public static void main(String[] args) {
            Weekday mon = Weekday.MON;
            Weekday tue = Weekday.TUE;
            Weekday wed = Weekday.WED;
            Weekday thu = Weekday.THU;
            Weekday fri = Weekday.FRI;
            System.out.println(mon.getName());   // 输出结果:星期一
        }
    }

    (2)JDK1.5后:

    public enum Weekday2 {
        MON("星期一"),TUE("星期二"),WED("星期三"),THU("星期四"),FRI("星期五");
    
        private String name;
    
        private Weekday2(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    }

    创建对象和上面的方法一样。

    • 特殊情况:枚举类里面有抽象方法

    (1)jdk1.5前:

    public abstract class Weekday {
    
        public static final Weekday MON = new Weekday("星期一"){
            @Override
            public void show() {
                System.out.println("今天是星期一");               // 匿名类。父类引用指向子类对象。
            }
        };
        /*public static final Weekday TUE = new Weekday("星期二");
        public static final Weekday WED = new Weekday("星期三");
        public static final Weekday THU = new Weekday("星期四");
        public static final Weekday FRI = new Weekday("星期五");*/
    
        private String name;
    
        private Weekday(String name){
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public abstract void show();
    }

    (2)jdk1.5后:

    public enum Weekday2 {
        MON("星期一"){
            @Override
            public void show() {
                System.out.println("今天是星期一");
            }
        },TUE("星期二") {
            @Override
            public void show() {
                System.out.println("今天是星期二");
            }
        },WED("星期三") {
            @Override
            public void show() {
                System.out.println("今天是星期三");
            }
        },THU("星期四") {
            @Override
            public void show() {
                System.out.println("今天是星期四");
            }
        },FRI("星期五") {
            @Override
            public void show() {
                System.out.println("今天是星期五");
            }
        };
    
        private String name;
    
        private Weekday2(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public abstract void show();
    }
  • 相关阅读:
    ScheduledExecutorService 定时任务运行原理(三)
    ThreadPoolExecutor详解(二)
    Future模式详细讲解及实例分析
    @ApiParam @PathVariable @RequestParam三者区别
    协议及首次使用必读
    关于webmagic的依赖问题:ava.lang.NoClassDefFoundError: org/jsoup/helper/StringUtil
    空指针错误悼念与分析
    原创:idea启动项目的是否报错:java.lang.ClassNotFoundException: javax.servlet.ServletContext
    聚合工程中 context:component-scan 与数据源的思考,的使用说明
    关于component-scan中base-package包含通配符的问题探究
  • 原文地址:https://www.cnblogs.com/chichung/p/10300222.html
Copyright © 2011-2022 走看看