列挙類の詳細

5141 ワード

目次
 
1.紹介
1.1何が列挙類ですか?
1.1.1カスタムエニュメレート・コードのプレゼンテーション:
1.1.2enumキーワード定義エニュメレート・クラス
1.紹介
1.1何が列挙類ですか?
定義:クラスのオブジェクトは限定されています.たとえば:
  • 週:Monday(月)、…、Sunday(日曜日)
  • 性別:Man(男性)、Woman(女性)
  • 季節:Spring(春節)…Winter(冬)
  • 注文状態:Nonpayment(未払い)、Paid(既払い)、Delivered(出荷済み)、Return(返品)、Checked(確認済み)Fulfilled(配付済み)
  • 定数を定義する必要がある場合は、エニュメレート・クラスを使用することを強く推奨します.
    1.1.1カスタムエニュメレート・コードのプレゼンテーション:
    package com.atguigu.java;
    
    /**
     *  、      
     * 1.      :         ,   。         
     * 2.          ,         
     * 3.            ,              。
     *
     *  、       
     *    :jdk5.0  ,      
     *    :jdk5.0,    enum        
     *
     *  、Enum       :
     *    values()  :           。                 。
     *    valueOf(String str):                  。              “  ”。   ,       :IllegalArgumentException。
     *    toString():              
     *
     *  、  enum                
     *      :    , enum        
     *      :                   
     *
     * @author wudi
     * @create 2019    10:17
     */
    public class SeasonTest {
    
        public static void main(String[] args) {
            Season spring = Season.SPRING;
            System.out.println(spring);
    
        }
    
    }
    //      
    class Season{
        //1.  Season     :private final  
        private final String seasonName;
        private final String seasonDesc;
    
        //2.        ,        
        private Season(String seasonName,String seasonDesc){
            this.seasonName = seasonName;
            this.seasonDesc = seasonDesc;
        }
    
        //3.            :public static final 
        public static final Season SPRING = new Season("  ","    ");
        public static final Season SUMMER = new Season("  ","    ");
        public static final Season AUTUMN = new Season("  ","    ");
        public static final Season WINTER = new Season("  ","    ");
    
        //4.    1:          
        public String getSeasonName() {
            return seasonName;
        }
    
        public String getSeasonDesc() {
            return seasonDesc;
        }
        //4.    1:  toString()
        @Override
        public String toString() {
            return "Season{" +
                    "seasonName='" + seasonName + '\'' +
                    ", seasonDesc='" + seasonDesc + '\'' +
                    '}';
        }
    }
    
    1.1.2enumキーワード定義エニュメレート・クラス
    package com.atguigu.java;
    
    /**
     *   enum        
     *   :           java.lang.Enum 
     *
     * @author wudi
     * @create 2019    10:35
     */
    public class SeasonTest1 {
        public static void main(String[] args) {
            Season1 summer = Season1.SUMMER;
            //toString():          
            System.out.println(summer.toString());
    
    //        System.out.println(Season1.class.getSuperclass());
            System.out.println("****************");
            //values():               
            Season1[] values = Season1.values();
            for(int i = 0;i < values.length;i++){
                System.out.println(values[i]);
                values[i].show();
            }
            System.out.println("****************");
            Thread.State[] values1 = Thread.State.values();
            for (int i = 0; i < values1.length; i++) {
                System.out.println(values1[i]);
            }
    
            //valueOf(String objName):          objName   。
            Season1 winter = Season1.valueOf("WINTER");
            //    objName      ,    :IllegalArgumentException
    //        Season1 winter = Season1.valueOf("WINTER1");
            System.out.println(winter);
            winter.show();
        }
    }
    
    interface Info{
        void show();
    }
    
    //  enum      
    enum Season1 implements Info{
        //1.          ,       ","  ,    ";"  
        SPRING("  ","    "){
            @Override
            public void show() {
                System.out.println("     ?");
            }
        },
        SUMMER("  ","    "){
            @Override
            public void show() {
                System.out.println("  ");
            }
        },
        AUTUMN("  ","    "){
            @Override
            public void show() {
                System.out.println("     ");
            }
        },
        WINTER("  ","    "){
            @Override
            public void show() {
                System.out.println("     ");
            }
        };
    
        //2.  Season     :private final  
        private final String seasonName;
        private final String seasonDesc;
    
        //2.        ,        
    
        private Season1(String seasonName,String seasonDesc){
            this.seasonName = seasonName;
            this.seasonDesc = seasonDesc;
        }
    
        //4.    1:          
        public String getSeasonName() {
            return seasonName;
        }
    
        public String getSeasonDesc() {
            return seasonDesc;
        }
    //    //4.    1:  toString()
    //
    //    @Override
    //    public String toString() {
    //        return "Season1{" +
    //                "seasonName='" + seasonName + '\'' +
    //                ", seasonDesc='" + seasonDesc + '\'' +
    //                '}';
    //    }
    
    
    //    @Override
    //    public void show() {
    //        System.out.println("      ");
    //    }
    }