zoukankan      html  css  js  c++  java
  • Java enum(枚举)使用详解之一

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

        下面是我在使用 enum 过程中的一些经验和总结,主要包括如下内容:

    1. 原始的接口定义常量

    2. 语法(定义)

    3. 遍历、switch 等常用操作

    4. enum 对象的常用方法介绍

    5. 给 enum 自定义属性和方法

    6. EnumSet,EnumMap 的应用

    7. enum 的原理分析

    8. 总结

    原始的接口定义常量

    public interface IConstants {
        String MON = "Mon";
        String TUE = "Tue";
        String WED = "Wed";
        String THU = "Thu";
        String FRI = "Fri";
        String SAT = "Sat";
        String SUN = "Sun";
    }

    语法(定义)

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

    package com.hmw.test;
    /**
     * 枚举测试类
     * @author <a href="mailto:hemingwang0902@126.com">何明旺</a>
     */
    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);
        ... ...

    遍历、switch 等常用操作

    对enum进行遍历和switch的操作示例代码:

    public class Test {
        public static void main(String[] args) {
            for (EnumTest e : EnumTest.values()) {
                System.out.println(e.toString());
            }
             
            System.out.println("----------------我是分隔线------------------");
             
            EnumTest test = EnumTest.TUE;
            switch (test) {
            case MON:
                System.out.println("今天是星期一");
                break;
            case TUE:
                System.out.println("今天是星期二");
                break;
            // ... ...
            default:
                System.out.println(test);
                break;
            }
        }
    }

    输出结果:

    MON
    TUE
    WED
    THU
    FRI
    SAT
    SUN
    ----------------我是分隔线------------------
    今天是星期二
  • 相关阅读:
    初识HTML5
    java_类的有参方法
    示例:人机猜拳(请各位大佬看下)
    java-类和对象(笔记)
    Redis设计与实现——多机数据库的实现
    Redis设计与实现——独立功能的实现
    mina
    GUAVA-cache实现
    GUAVA-ListenableFuture实现回调
    Netty多协议开发
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/6868561.html
Copyright © 2011-2022 走看看