Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java 枚举类


在 java 中,枚举类型是一种特殊数据类型,能够为一个变量定义一组预定义的常量。变量必须等于为其预定义的值之一。

定义枚举类型

下面是一个典型的例子:

public enum Size {
    SMALL, MEDIUM, LARGE, EXTRA_LARGE
}

实际上,这个声明定义的类型是一个类,它刚好有 4 个实例,在此尽量不要构造新对象。

因此,在比较两个枚举类型的值时,永远不需要调用 equals,而直接使用“==”就可以了。

如果需要的话,可以在枚举类型中添加一些构造器、方法和域。当然,构造器只是在构造枚举常量的时候被调用。下面是一个示例:

public enum Size {

    SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");

    private String abbreviation;

    Size(String abbreviation) {
        this.abbreviation = abbreviation;
    }

    public String getAbbreviation() {
        return abbreviation;
    }
}

所有的枚举类型都是 Enum 类的子类。它们继承了这个类的许多方法。其中最有用的一个是 toString,这个方法能够返回枚举常量名。例如,Size.SMALL.toString() 将返回字符串“SMALL”。

toString 的逆方法是静态方法 valueOf。例如,语句:

Size s = Enum.valueOf(Size.class, "SMALL");

将 s 设置成 Size.SMALL。

每个枚举类型都有一个静态的 values 方法,它将返回一个包含全部枚举值的数组。例如,如下调用:

Size[] values = Size.values();

返回包含元素 Size.SMALL,Size.MEDIUM,Size.LARGE,Size.EXTRA_LARGE 的数组。

ordinal 方法返冋 enum 声明中枚举常量的位置,位置从 0 开始计数。例如:Size.MEDIUM.ordinal() 返回 1。

java.lang.Enum api

java.lang.Enum api
描述

public final int compareTo(E o)

比较此枚举与指定对象的顺序。

public final String name()

返回此枚举常量的名称,在其枚举声明中对其进行声明。

public final int ordinal()

返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。

public String toString()

返回枚举常量的名称,它包含在声明中。