zoukankan      html  css  js  c++  java
  • Java基础教程(15)--枚举类型

      枚举类型定义了一个枚举值的列表,每个值是一个标识符。例如,下面的语句声明了一个枚举类型,用来表示星期的可能情况:

    public enum Day {
        SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
    }
    

      实际上,这个声明定义的类型是一个类,它有7个实例。因此,在比较两个枚举类型的值时,永远不需要调用equals,直接使用“==”就可以了。
      枚举类型的值类似于一个常量,因此,按照惯例拼写都使用大写字母。而枚举类型的命名则与类名的命名规则一致。
      一旦定义了枚举类型,就可以使用这个类型来声明变量:

    Day day;
    

      变量day只能是枚举类型Day中的一个值或null。可以使用下面的语法访问枚举值:

    EnumName.ValueName
    

      例如,下面的语句将枚举值赋给变量day:

    day = Day.SUNDAY;
    

      可以在一个枚举类型的对象上使用下面的方法:

    • public String name();

      返回枚举值的名字。

    • public int ordinal();

      返回枚举值的序号。枚举类型中的第一个值序号为0,第二个值序号为1,依次类推。
      下面的例子展示了枚举类型的使用:

    public class EnumDemo {
        enum Day {
            SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
        }
        public static void main(String[] args) {
            Day day1 = Day.FRIDAY;
            Day day2 = Day.THURSDAY;
    
            System.out.println("The name of day1 is" + day1.name());
            System.out.println("The name of day2 is" + day2.name());
            System.out.println("The ordinal of day1 is" + day1.ordinal());
            System.out.println("The ordinal of day2 is" + day2.ordinal());
        }
    }
    

      这个程序的输出如下:

    The name of day1 is FRIDAY
    The name of day2 is THURSDAY
    The ordinal of day1 is 5
    The ordinal of day2 is 4
    

      由于枚举类型是Object类的子类和Comparable接口的实现类,因此可以对枚举对象调用Object类的方法,例如equals,toString等,也可以调用Comparable接口的compareTo方法。
      在switch-case语句中使用枚举类型时,case标签可以是省略枚举类型的枚举值,例如:

    switch (day) {
        case SUNDAY:
            // process SUNDAY
        case MONDAY:
            // process MONDAY
        ...
    }
    

      可以定义具有数据域、构造器和方法的枚举类型:

    public enum Day {
        SUNDAY("星期天"), MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"),
        THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六");
    
        public String description;
    
        private Day(String description) {
            this.description = description;
        }
    
        public String getDescription() {
            return description;
        }
    }
    

      需要注意的是,当枚举类型中除了枚举值的声明外还有其他部分时,枚举值的声明必须是第一条语句,且结尾处需要使用分号。此外,由于枚举值的数量是在编译期就确定的,因此不建议创建新的枚举值,所以Java语法要求枚举类型的构造方法是私有的以避免被直接调用。private修饰符可省略,这种情况下,构造方法也会被默认为私有的。

  • 相关阅读:
    给微信小程序添加简单小动画
    微信小程序封装wx.request方法
    微信小程序项目,实现图书列表渲染,以及图书详情跳转
    总结一下微信小程序中父子兄弟组件传递数据
    给自己看的flex布局方法
    moment.js踩坑
    Vue项目的一些优化策略
    vue中按需使用第三方插件
    js基础复习2,class和原型
    js基础复习1
  • 原文地址:https://www.cnblogs.com/maconn/p/10163287.html
Copyright © 2011-2022 走看看