1. 程式人生 > >二、Java面向對象(18)_枚舉

二、Java面向對象(18)_枚舉

style HR 所有 nal [] 新的 我們 font soft

2018-05-12

枚舉

一、枚舉的定義以及底層分析特點

  JDK1.5引入了新的數據類型——枚舉,是一個特殊的類。就是固定的多個對象的集合。

  定義格式:

  [修飾符] enum 枚舉類名{

    常量A,常量B,常量C;

  }

我們自定義的枚舉類型,在編譯(底層)都是直接繼承於java.liang.Enum類,Enum是所有枚舉的父類。

  枚舉類的特點:

  1、枚舉的直接父類java.liang.Enum,但不能顯示繼承Enum。

  2、枚舉就相當於一個類,可以定義構造方法、成員變量、普通方法和抽象方法。

  3、默認私有的構造方法。

  4、每個實例分別用全局常量表示,枚舉類的對象是固定的,實例個數有限,不能使用new來創建。

  5、枚舉實例必須位於枚舉體中最開始的部分,枚舉實例列表後要有分號和其他成員變量相分隔。

  6、枚舉實例後有花括號時,該實例是匿名內部類的對象(查看編譯後的class文件)。

----------------------------------------------------------------------------------------------------------------------

二、枚舉的使用

  1、枚舉中都是全局靜態常量,所以可以使用枚舉類名調用。

    Weekday day = Weekday.MONDAY;

  2、因為java.liang.Enum類是所有枚舉類的父類,所以所有的枚舉對象可以調用Enum類中的方法。

    String name = 枚舉對象.name();//返回枚舉對象的常量名稱

    int ordinal = 枚舉對象.ordinal();//返回枚舉對象的序號,從0開始

  3、編譯器生成的枚舉類的靜態方法

    枚舉類型[ ] values();

    Weekday[] ws = Weekday.values();//返回當前枚舉類型的所有常量,使用一個數組封裝起來。

  4、switch也支持操作枚舉類型

    JDK1.6之前的switch語句只支持int,char,enum類型,支持枚舉是因為底層使用的是枚舉對象的ordinal,而ordinal的類型是int類型

  5、枚舉的單例設計模式

參考:http://softbeta.iteye.com/blog/1185573

二、Java面向對象(18)_枚舉