Java中枚举的练习 你真的用过枚举么?

枚举概念

在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。 是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。(百度百科)

枚举使用

例如视频投稿状态:草稿、审核、发布。创一个静态变量类与枚举类

//静态常量实体类
class Status {
    //    草稿
    public static final int Draft = 1;
    //    审核
    public static final int Review = 2;
    //    发布
    public static final int Published = 3;
}

//枚举类
enum VideoStatus {
    Draft, Review, Published
}

class Judge {
    public static void main(String[] args) {
        judgeVideoStatus(VideoStatus.Review);
        judgeStatus(Status.Draft);
        System.out.println("=====华丽分割线======");
//        遍历枚举常量
        for (VideoStatus value : VideoStatus.values()) {
//            打印枚举数组值
            System.out.println(value);
//            打印枚举序号
            System.out.println(value.ordinal());
//            打印枚举常量名
            System.out.println(value.name());
//            根据字符串名称返回枚举常量
            VideoStatus published = VideoStatus.valueOf("Published");
            switch (published) {
                case Review:
                    System.out.println("这是审核");
                    break;
                case Draft:
                    System.out.println("这是草稿");
                    break;
                case Published:
                    System.out.println("这是发布");
                    break;
            }
            System.out.println();
        }
    }

    static void judgeVideoStatus(VideoStatus status) {
        System.out.println(status);
    }

    static void judgeStatus(int status) {
        System.out.println(status);
    }
}

以上代码比较下静态常量与枚举,枚举有更明确约束,例如在上述方法judgeVideoStatus中参数枚举类型,你只能写枚举中出现的常量,而在judgeStatus中参数就没相应约束了,想输入什么就输入什么,因此在比较严谨的场合下,枚举比静态常量更有优势。另一方便枚举也支持很多内置方法,使用起来很方便。


目录导航
  • 枚举概念
  • 枚举使用