之所以要研究这个类,因为它是java中所有枚举的父类,本文基于JDK1.9.0的java源码进行展开。
一、类定义:
public abstract class Enum<E extends Enum<E>>
implements Comparable<E>, Serializable {
可以看到Enum是一个虚基类,并且实现了Comparable接口和序列化接口。Enum类的泛型,必须是继承自Enum的子类。
二、成员常量和取值器:
1、成员常量name,被声明为final类型,意为不可变,同时只提供取值器。
private final String name;
public final String name() {
return name;
}
2、成员常量ordinal,被声明为final类型,意为不可变,同时只提供取值器。
private final int ordinal;
public final int ordinal() {
return ordinal;
}
三、构造函数:
构造函数被定义成protected,参数有两个,分别是name和ordinal,和成员常量相呼应。
protected Enum(St