java基礎篇---枚舉詳解


在JDK1.5之前,JAVA可以有兩種方式定義新類型:類和接口,對於大部分面向對象編程,有這兩種似乎就足夠了,但是在一些特殊情況就不合適。例如:想要定義一個Color類,它只能有Red,Green,Blue三種,其他值則是錯誤,在JDK1.5之后便引入枚舉類型。

枚舉其實就是一種類型,跟int, char 這種差不多,就是定義變量時限制輸入的,你只能夠賦enum里面規定的值。

public enum Color{
    RED,GREEN,BLUE ;    // 定義三個枚舉的類型
};

枚舉中有三個取值,以后再取的時候,只能從這三個內容取

public class GetEnumContent{
    public static void main(String args[]){
        Color c = Color.BLUE ;        // 取出藍色
        System.out.println(c) ;
    }
};

可以直接使用在Switch語句上

public class SwitchPrintEnum{
    public static void main(String args[]){
        for(Color c:Color.values()){    // 輸出枚舉中的全部內容
            print(c) ;
        }
    }
    public static void print(Color color){
        switch(color){
            case RED:{
                System.out.println("紅顏色") ;
                break ;
            }
            case GREEN:{
                System.out.println("綠顏色") ;
                break ;
            }
            case BLUE:{
                System.out.println("藍顏色") ;
                break ;
            }
            default:{
                System.out.println("未知顏色") ;
                break ;
            }
        }
    }
};

使用enum關鍵字可以定義一個枚舉,也可以定義一個Eunm類

枚舉類的操作方法:

在枚舉已經實現Comparable接口,所以在枚舉中的內容可以排序。

案列一

import java.util.Iterator;
import java.util.Set ;
import java.util.TreeSet ;
enum Color{
    RED,GREEN,BLUE ;
}
public class ComparableEnum{
    public static void main(String args[]){
        Set<Color> t = new TreeSet<Color>() ;    // 設置類型
        t.add(Color.GREEN) ;    // 加入綠色
        t.add(Color.RED) ;        // 加入紅色
        t.add(Color.BLUE) ;        // 加入藍色
        Iterator<Color> iter = t.iterator() ;
        while(iter.hasNext()){
            System.out.print(iter.next() + "") ;
        }
    }
};

 

案列二 

使用EnumMap

import java.util.EnumMap ;
import java.util.Map ;
enum Color{
    RED , GREEN , BLUE ;
}
public class EnumMapDemo{
    public static void main(String args[]){
        Map<Color,String> desc = null ;        // 定義Map對象,同時指定類型
        desc = new EnumMap<Color,String>(Color.class) ;    // 實例化EnumMap對象
        desc.put(Color.RED,"紅色") ;
        desc.put(Color.GREEN,"綠色") ;
        desc.put(Color.BLUE,"藍色") ;
        System.out.println("====== 輸出全部的內容 ======") ;
        for(Color c:Color.values()){
            System.out.println(c.name() + " --> " + desc.get(c)) ;
        }
        System.out.println("====== 輸出全部的鍵值 ======") ;
        for(Color c:desc.keySet()){
            System.out.print(c.name() + "") ;
        }
        System.out.println() ;
        System.out.println("====== 輸出全部的內容 ======") ;
        for(String s:desc.values()){
            System.out.print(s + "") ;
        }
    }
};

案列三

使用 EnumSet

import java.util.EnumSet ;
enum Color{
    RED , GREEN , BLUE ;
}
public class EnumSetDemo{
    public static void main(String args[]){
        EnumSet<Color> esOld = null ;            // 聲明一個EnumSet對象
        EnumSet<Color> esNew = null ;
        System.out.println("======== EnumSet.copyOf(Color.class) =====") ;
        esOld = EnumSet.noneOf(Color.class) ;    // 將枚舉的全部類型設置到EnumSet對象之中
        esOld.add(Color.RED) ;    // 增加內容
        esOld.add(Color.GREEN) ;    // 增加內容
        esNew = EnumSet.copyOf(esOld) ;    // 從已有的集合拷貝過來
        print(esNew) ;
    }
    public static void print(EnumSet<Color> temp){    // 專門的輸出操作
        for(Color c:temp){        //  循環輸出EnumSet中的內容
            System.out.print(c + "") ;
        }
        System.out.println() ;
    }
};

 


免責聲明!

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



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