JAVA 枚举

来源:互联网 发布:淘宝卖家留言在哪里 编辑:程序博客网 时间:2024/06/05 02:54

枚举的定义

  枚举也是JDK5.0的新特性。

  JDK5.0加入了一个全新类型的“类”——枚举类型。

  为此引入了一个新的关键字enum。

 可以这样来定义一个枚举类型:public enum Color{    Red, White, Blue,}
然后可以这样来使用:Color myColor = Color.Red;

枚举类型的静态方法

枚举类型提供了两个有用的静态方法values()和valueOf()。

  values()返回枚举所有成员的数组。

  values()方法的使用:

 //values()方法的使用        for(Color color : Color.values())        {            System.out.println(color);                }

将输出:

  Red
  White
  Blue
  即values()输出定义在Color中的所有枚举类型。

  而valueOf()将字符串转换成枚举值。
枚举的使用

  枚举可以用在switch语句中。

public class EnumTest{    public static void doOperation(OpConstant opConstant)    {        switch (opConstant)        {        case TURN_LEFT:            System.out.println("向左转");            break;        case TURN_RIGHT:            System.out.println("向右转");            break;        case SHOOT:            System.out.println("射击");            break;        default:            break;        }    }    public static void main(String[] args)    {        doOperation(OpConstant.SHOOT);    }}enum OpConstant{    TURN_LEFT, TURN_RIGHT, SHOOT,}

枚举的本质

public enum Coin{    penny("hello"), nickle("world"), dime("welcome"), quarter("hello world");    private String value;    public String getValue()    {        return value;    }    Coin(String value)    {        this.value = value;    }    public static void main(String[] args)    {        Coin coin = Coin.quarter;        System.out.println(coin.getValue());    }}

定义枚举类型时本质上就是在定义一个类别,只不过很多细节由编译器帮您完成,所以某种程度上,enum关键字的作用就像是class或interface。

  当您使用“enum”定义枚举类型时,实质上您定义出来的类型继承自java.lang.Enum类型,而每个枚举的成员其实就是您定义的枚举类型的一个实例(Instance),它们都被预设为final,所以您无法改变它们,它们也是static成员,所以您可以通过类型名称直接使用它们,当然最重要的,它们都是公开的(public)。即枚举中的每个成员默认都是public static final的。

枚举的本质:

  每个枚举的成员其实就是您定义的枚举类型的一个实例(Instance)。

  当定义了一个枚举类型后,在编译的时候就能够确定该枚举类型有多少个实例,这些对象的名字是什么。在运行期间无法再使用该枚举类型创建新的实例。

0 0