java什么是类枚举类_java枚举类型是什么?

下面就是一个典型枚举类型的定义:

Java代码

Java代码

public enum Color{

RED,BLUE,BLACK,YELLOW,GREEN

}

显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类。

而这些类都是类库中Enum类的子类(java。lang。Enum)。它们继承了这个Enum中的许多有用的方法。我们对代码编译之后发现,编译器将enum类型单独编译成了一个字节码文件:Color。class。

Color字节码代码

final enum hr。

test。Color {

// 所有的枚举值都是类静态常量

public static final enum hr。test。Color RED;

public static final enum hr。test。Color BLUE;

public static final enum hr。

test。Color BLACK;

public static final enum hr。test。Color YELLOW;

public static final enum hr。test。Color GREEN;

private static final synthetic hr。

test。Color[] ENUM$VALUES;

// 初始化过程,对枚举类的所有枚举值对象进行第一次初始化

static {

0

new hr。test。Color [1]

3

dup

4

ldc [16] //把枚举值字符串"RED"压入操作数栈

6

iconst_0

// 把整型值0压入操作数栈

7

invokespecial hr。

test。Color(java。lang。String, int) [17] //调用Color类的私有构造器创建Color对象RED

10

putstatic hr。test。Color。RED : hr。test。Color [21]

//将枚举对象赋给Color的静态常量RED。

。。。。。。。。。

枚举对象BLUE等与上同

102

return

};

// 私有构造器,外部不可能动态创建一个枚举类对象(也就是不可能动态创建一个枚举值)。

private Color(java。lang。String arg0, int arg1){

// 调用父类Enum的受保护构造器创建一个枚举对象

3

invokespecial java。

lang。Enum(java。lang。String, int) [38]

};

public static hr。test。Color[] values();

// 实现Enum类的抽象方法

public static hr。test。

Color valueOf(java。lang。String arg0);

}

下面我们就详细介绍enum定义的枚举类的特征及其用法。(后面均用Color举例)

1、Color枚举类就是class,而且是一个不可以被继承的final类。

其枚举值(RED,BLUE。。。)都是Color类型的类静态常量, 我们可以通过下面的方式来得到Color枚举类的一个实例:

Color c=Color。RED;

注意:这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写。

全部

你可能感兴趣的:(java什么是类枚举类)