Java枚举使用详解

一、枚举的概念

枚举:在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是特定类型对象的计数。

语法:需要使用enum关键字,在java.lang.enum类(抽象)的子类。

enum EnumTest1 {
    ONE, TWO, THREE, FOUR, FIVE
}

枚举类型的每一个值都将映射到protected Enum(String name, int ordinal)构造函数中,然后每个值的名称都会被转换成一个字符串。

EnumTest1 etSimple = EnumTest1.ONE;
switch(etSimple) {
    case ONE:
        System.out.println(etSimple.toString());
        break;
    case TWO:
        System.out.println(etSimple.toString());
            break;
    case THREE:
            System.out.println(etSimple.toString());
        break;
    case FOUR:
        System.out.println(etSimple.toString());
        break;
    case FIVE:
        System.out.println(etSimple.toString());
            break;
    // 如果所有的枚举值都有,那么可以省略default
    //default:
    //        System.out.println(etSimple.toString());
    //        break;
}

 

二、自定义属性和方法

enum在Java中是以class的形式被编译器翻译的

// 使用javap EnumTest解析代码得到以下代码
final
class EnumTest extends java.lang.Enum<EnumTest> { public static final EnumTest ONE; public static final EnumTest TWO; public static EnumTest[] values(); public static EnumTest valueOf(java.lang.String); static {}; }

 

这就说明enum本质上是一个类,具有类的部分特性。但enum本身又不是类,enum不能被继承或者继承其他的枚举(java.lang.Enum是抽象类),构造函数只能是private类型(否则编译器会报错)。

既然是一个类,那我们可以为类添加方法和属性

enum EnumTest {
    MON(1, "星期一"), TUE(2, "星期二"), WED(3, "星期三"), THU(4, "星期四"), FRI(5, "星期五"), SAT(6, "星期六"), SUN(7, "星期日");
// private 可以省略,不能是其他的控制符
private EnumTest(int value, String text) { this.value = value; this.valueString = text; } // 属性 int value; String valueString;
  // 自定义的方法
void testMethod() { System.out.println("这是一个枚举类型中的方法!!!!"); } }

EnumTest et = EnumTest.ONE;
System.out.println(et.valueString);

 

三、常用的枚举方法

int compareTo(E o)// 比较此枚举对象与对象 o 的顺序,同一类型的枚举值
Class<E> getDeclaringClass() // 返回与此枚举常量的枚举类型相对应的Class对象
String name()// 返回枚举常量的名字
String toString()// 返回枚举常量的名称
static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)// 返回指定类型的枚举常量

 

 

 

 

 

---恢复内容结束---

posted @ 2018-02-26 13:46  缇布  阅读(171)  评论(0编辑  收藏  举报