java中的枚舉


枚舉的理解

  • 枚舉是一組常量的集合,可以理解:枚舉屬於一種特殊的類,里面包含一組有限的特定對象

枚舉定義的兩種方式(自定義枚舉和enum關鍵字枚舉)

第一種枚舉的自定義的實現步驟和注意事項

  • 不要提供Setxxx方法,因為枚舉對象值通常為只讀
  • 對枚舉對象的屬性使用:public+final+static修飾符
  • 枚舉對象名通常使用全部大寫,常量命名規范
  • 枚舉對象根據需要,也可以有多個屬性
  • 在本類的內部創建一組本類實例對象
  • 案例
    public class ad {
        public static void main(String[] args) {
            //打印枚舉的單個對象實例
            System.out.println(GRY.GREEN);
        }
        
        //自定義枚舉
        public static class GRY {
    
            //創建多個枚舉對象的實例
            public final static GRY GREEN = new GRY("1","綠燈");
            public final static GRY RED = new GRY("1","紅燈");
            public final static GRY YELLO = new GRY("1","黃燈");
    
            private String type;    //類型
            private String desc;    //描述
    
            //構造器私有化
            private GRY(String type, String desc) {
                this.type = type;
                this.desc = desc;
            }
            
            //只給getxx方法 不要set 方法,因為set方法可以修改
            public String getType() {
                return type;
            }
    
            public String getDesc() {
                return desc;
            }
    
            @Override
            public String toString() {
                return  type + "\n"+ desc ;
            }
        }
    }
    

    Enum關鍵字定義枚舉

  • 使用關鍵字enum來替代class
  • 用常量名.(實慘列表)在類內部的第一行來定義
  • 如果有多個常量(對象)中間用,號隔空
  • 如果使用enum來實現枚舉,使用,號隔開
  • 舉例
    class Weather {
        public static void main(String[] args) {
            //打印自定義枚舉常量
            System.out.println(Season.SPRING);
            System.out.println(Season.WINTER);
            System.out.println(Season.AUTUMN);
            System.out.println(Season.SUMMER);
        }
    
        enum Season {
            //如果使用 enum 來實現枚舉,要求將定義常量對象,寫在前面
            // 如果我們使用的是無參構造器,創建常量對象,則可以省略 ()
            SPRING("春天", "溫暖"), WINTER("冬天", "寒冷"), AUTUMN("秋天", "涼爽"),
            SUMMER("夏天", "炎熱");
    
            private String name;
            private String desc;//描述
    
            private Season() {//無參構造器
            }
    
            private Season(String name, String desc) {//有參構造器 並私有化
                this.name = name;
                this.desc = desc;
            }
    
            public String getName() {
                return name;
            }
    
            public String getDesc() {
                return desc;
            }
    
            @Override
            public String toString() {
                return  name + "\t" + desc ;
            }
        }
    }
  • enum關鍵字的注意事項
    • 當enum關鍵字開發一個枚舉類時,默認會繼承enum類,這個類是一個final類,不能再被繼承
    • 如果我們使用是無參構造器,則可以直接寫常量名,小括號可以省略
    • 枚舉對象必須放在枚舉的首行
    • 使用enum關鍵字后,不能使用其他類,因為enum會隱式繼承Enum
    • 枚舉類型對象之間的值比較式可以用==,直接比較不用equlas


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM