JAVA5 學習(3)

來源:互聯網
上載者:User
文章目錄
  • Enumerations 枚舉
Enumerations 枚舉

    Enums很像public static final int聲明,它原來常被用於enum values。它比ints最大的優點在於它是型別安全的,你不能錯誤的用一種類型代替另一種類型的枚舉(Enums),不同於ints,他們對編譯器來說都是一樣的。

    Enums只提供了一點點新增的功能。EnumMap 和 EnumSet這兩個工具類,是對Enums進行了特殊最佳化的標準集合(collection )類。如果你確定你的集合(collection )裡只包含(Enums),你就可以使用這兩個經過最佳化的標準工具集合類來代替HashMap 或 HashSet

    在很多情況下,你的程式裡可以用Enums代替public static final int。他們的功能是相當的,你也可以靜態引入Enums(那樣它的調用和對public static final int的調用是一致的)即使是在內建類或內建enum中。注意:在比較Enums時,他們的排列順序將代表他們的索引。

      隱含的靜態方法

      兩個靜態方法將會隱含在你寫的Enums聲明中。他們不會實現在java.lang.Enum中,因為他們在java.lang.Enum的子類中,而不是聲明在java.lang.Enum本身。

      第一個方法values()返回Enums的所有制的一個值數組。

      第二個方法valueOf()返回特定String對應的值,特定String必須精確的吻合。

      方法

      最令人興奮的就是每一個enums都可以有自己的方法。過去你可能書寫很多代碼對public static final int(代表特定的資料庫)執行switch 操作將其轉換為JDBC連接字串。現在你可以直接使用enums的方法達到你的目的。

       下面的例子DatabaseType enum有一個抽象方法,每個enum執行個體將會提供這個方法的實現。

public enum DatabaseType {    ORACLE {        public String getJdbcUrl() {...}    },    MYSQL {        public String getJdbcUrl() {...}    };    public abstract String getJdbcUrl();}
    現在你可以直接使用這個enum 提供的有效方法:
DatabaseType dbType = ...;String jdbcURL = dbType.getJdbcUrl();
    一些完整的程式碼片段:
EnumExample1.java 
enum OperatingSystems {
    windows, unix, linux, macintosh
}
public class EnumExample1 {
    public static void main(String args[])
    {
        OperatingSystems os;
        os = OperatingSystems.windows;
        switch(os) {
            case windows:
                System.out.println("You chose Windows!");
                break;
            case unix:
                System.out.println("You chose Unix!");
                break;
            case linux:
                System.out.println("You chose Linux!");
                break;
            case macintosh:
                System.out.println("You chose Macintosh!");
                break;
            default:
                System.out.println("I don't know your OS.");
                break;
        }
    }
}
EnumBitmapExample.java 
enum ProgramFlags {
    showErrors(0x01),
    includeFileOutput(0x02),
    useAlternateProcessor(0x04);
    private int bit;
    ProgramFlags(int bitNumber)
    {
        bit = bitNumber;
    }
    public int getBitNumber()
    {
        return(bit);
    }
}
public class EnumBitmapExample {
    public static void main(String args[])
    {
        ProgramFlags flag = ProgramFlags.showErrors;
        System.out.println("Flag selected is: " +
                                flag.ordinal() +
                           " which is " +
                                flag.name());
    }
}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.