zoukankan      html  css  js  c++  java
  • 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)// 返回指定类型的枚举常量

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

  • 相关阅读:
    动态添加删除控件
    文件下载源码
    poj 1300 欧拉回路、通路 解题报告
    hdu 1232 并查集 或者 深搜
    hdu 2546 01背包问题
    强连通图的判断 hdu 1269
    hdu 2159 二维费用背包问题
    Hdu 3336 kmp+dp解题报告
    hdu 3639 强连通练习使用
    hdu 1712 分组背包问题
  • 原文地址:https://www.cnblogs.com/meilj/p/8472770.html
Copyright © 2011-2022 走看看