欢迎访问我的个人网站==》 jiashubing.cn

初识Java Enum

enum 的全称为 enumeration, 是 JDK 1.5  中引入的新特性,存放在 java.lang 包中。

enum是关键字,感觉它跟class、interface是并列的,并且不能跟final,abstract同时使用,因为它默认是final类型了。

enum类中的每个enum元素都是其类的static final实例

enum是枚举类型,定义为”staitc final“的,也就是说不能被重写和继承,在初始化过程中即进行赋值,并且不能被改变

enum修饰的类不能被其他类继承,也不能继承其他类。原因在于,enum默认继承了Enum类,所以不能多重继承,而被enum修饰的类默认为final的,所以也不能衍生出子类。

 

最简单的例子

 1 enum EnumData {
 2     MON, TUE, WED, THU, FRI, SAT, SUN;
 3 }
 4 public class EnumTest {
 5     public static void main(String[] args) {
 6         System.out.println(EnumData.MON);
 7         for (EnumData e : EnumData.values()) {
 8             System.out.println(e.toString());
 9         }
10     }
11 }

 

语法(定义)

    创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式 Class Enum<E extends Enum<E>>,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。

public enum EnumTest {
MON, TUE, WED, THU, FRI, SAT, SUN;
}

这段代码实际上调用了7次 Enum(String name, int ordinal):

new Enum<EnumTest>("MON",0);
new Enum<EnumTest>("TUE",1);
new Enum<EnumTest>("WED",2);
... ...

 

enum 对象的常用方法介绍

int compareTo(E o)
          比较此枚举与指定对象的顺序。
Class<E> getDeclaringClass()
          返回与此枚举常量的枚举类型相对应的 Class 对象。
String name()
          返回此枚举常量的名称,在其枚举声明中对其进行声明。
int ordinal()
          返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String toString()
           返回枚举常量的名称,它包含在声明中。
static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
          返回带指定名称的指定枚举类型的枚举常量。

 

参考链接:
[1]http://www.cnblogs.com/hyl8218/p/5088287.html
[2]http://blog.csdn.net/u013248535/article/details/52918940

 

详细使用,还是参考链接里吧!

 

添加一份我常用的模板吧

 

/**
 * 转码状态
 *
 * @author jiashubing
 * @since 2019/1/18
 */
public enum TranscodeStatusEnum {

    FAIL("转码失败", (short) -1), WAIT("排队等待", (short) 0), COMMIT("提交作业", (short) 1), SUCCESS("完成转码", (short) 2);

    private String name;
    private short index;

    // 构造方法
    TranscodeStatusEnum(String name, short index) {
        this.name = name;
        this.index = index;
    }

    //覆盖方法
    @Override
    public String toString() {
        return this.index + "_" + this.name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public short getIndex() {
        return index;
    }

    public void setIndex(short index) {
        this.index = index;
    }
}

 

posted @ 2017-05-03 13:39  贾树丙  阅读(320)  评论(0编辑  收藏  举报