zoukankan      html  css  js  c++  java
  • 枚举类enum

    1. 特点

      (1)enum 与 class、interface 具有相同地位,使用 enum 定义,默认使用 final 修饰,因此不能派生子类;

      (2)默认继承 java.lang.Enum 类,所以不能继承其他父类;其中 java.lang.Enum 类实现了 java.lang.Serializable 和 java.lang.Comparable 接口;可以实现一个或多个接口;

      (3)可以拥有构造器、成员方法、成员变量,构造器默认使用 private 修饰,且只能使用 private 修饰,成员变量默认使用public static final 修饰;

      (4)枚举类所有实例必须在第一行给出,否则无法产生实例;多个枚举变量直接用逗号隔开,最后一个用分号;枚举变量最好大写,多个单词之间使用”_”隔开(比如:INT_SUM);在其他类中使用enum变量的时候,只需要【类名.变量名】就可以了,和使用静态变量一样。

    2. 枚举变量的方法

      (1)Weekday.valueOf() 方法:

    它的作用是传来一个字符串,然后将它转变为对应的枚举变量。前提是你传的字符串和定义枚举变量的字符串一抹一样,区分大小写。如果你传了一个不存在的字符串,那么会抛出异常。

      (2)Weekday.values()方法。

    这个方法会返回包括所有枚举变量的数组。在该例中,返回的就是包含了七个星期的Weekday[]。可以方便的用来做循环。

      (3)枚举变量的toString()方法。

    该方法直接返回枚举定义枚举变量的字符串,比如MON就返回【”MON”】。

      (4)枚举变量的.ordinal()方法。

    默认请款下,枚举类会给所有的枚举变量一个默认的次序,该次序从0开始,类似于数组的下标。而.ordinal()方法就是获取这个次序(或者说下标)

      (5)枚举类的name()方法。

    它和toString()方法的返回值一样,事实上,这两个方法本来就是一样的。

    3. 枚举类可以有抽象方法,抽象方法的方法体由成员变量后面的代码块实现,具体见以下代码

    4. 可以使用switch case

    枚举类

    public enum Season {
    
         //由各个枚举变量后面的代码块实现抽象方法
        SPRING(1,"MON") {
            public Season nextSeason() {
                return SUMMER;
            }
        },
        SUMMER(2,"TUS") {
            public Season nextSeason() {
                return FALL;
            }
        },
        FALL(3,"WED") {
            public Season nextSeason() {
                return WINTER;
            }
        },
        WINTER(4,"THU") {
            public Season nextSeason() {
                return SPRING;
            }
        };
    
        private int intSeason;
        private String stringSeason;
    
        //构造器默认private
        Season(int intSeason,String stringSeason){
            this.intSeason=intSeason;
            this.stringSeason=stringSeason;
        }
    
        public int getIntSeason(){
            return this.intSeason;
        }
    
        public String getStringSeason(){
            return this.stringSeason;
        }
    
        /**
         * 抽象方法
         * @return
         */
        public abstract Season nextSeason();
    
        /**
         * 枚举类的switch..case
         * @param seaon
         */
        public static void judge(Season seaon){
            switch (seaon){
                case FALL:
                    System.out.println(FALL.name());
                case SPRING:
                    System.out.println(SPRING.name());
                case SUMMER:
                    System.out.println(SUMMER.name());
                case WINTER:
                    System.out.println(WINTER.name());
            }
        }
    }

    使用

    public class SeasonTest {
        public static void main(String[] args) {
            System.out.println(Season.SPRING.nextSeason().name());
            Season.judge(Season.WINTER);
        }
    }
  • 相关阅读:
    C++中迭代器失效的问题
    怎么转载别人的博客
    Linux下模拟实现shell
    Linux下的文件描述符与文件指针及其区别
    智能指针
    C++模板(下)
    C++中的模板(上)
    僵尸进程和孤儿进程
    Linux下的atexit函数
    多线程练习
  • 原文地址:https://www.cnblogs.com/yjh1995/p/11572648.html
Copyright © 2011-2022 走看看