JDK5-枚举

使用普通类模拟枚举

public class Weekday {
    private Weekday() {} // 私有化
    
    public static final Weekday MONDAY = new Weekday();  // 每个枚举都是一个对象
    public static final Weekday TUESDAY = new Weekday();

    public String toString() {
        if(this == MONDAY)
            return "Monday";
        else if(...) ...
    }
}

使用抽象类模拟枚举

public abstract class Weekday {
    private Weekday() {}

    public final static Weekday MONDAY = new Weekday() {
        public Weekday nextDay() {
            return TUESDAY;
        }
    };

    public final static Weekday TUESDAY = new Weekday() {
        public Weekday nextDay() {
            return WEDNESDAY;
        }
    };

    ...

    public abstract Weekday nextDay();
}

使用抽象类模拟可以免除toString()写大量的if-else语句,不需要对每个对象进行判断,只需要有具体实现类完成即可

枚举类

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

普通的枚举类末尾不需要写分号

带构造参数枚举

public enum Weekday {    
    SUN(5), MON(), TUE(7), WED(), THU(9), FRI, SAT;    // 必须第一行,且以分号结尾

    private Weekday() {}
    private Weekday(int number) {
        System.out.println(number);
    }
}

枚举中每个变量都是static final的

带抽象函数的枚举

public enum Weekday {    // enum不用abstract修饰
    SUN(5) {
        public Weekday nextDay() {
            return MON;
        }
    }, 
    MON() {
        public Weekday nextDay() {
            return TUE;
        }
    }, 
    TUE() {
        public Weekday nextDay() {
            return WED;
        }
    }, 
    WED() {
        public Weekday nextDay() {
            return THU;
        }
    }, 
    THU() {
        public Weekday nextDay() {
            return FRI;
        }
    }, 
    FRI() {
        public Weekday nextDay() {
            return SAT;
        }
    }, 
    SAT() {
        public Weekday nextDay() {
            return SUN;
        }
    };

    private Weekday() {}
    private Weekday(int number) {
        System.out.println(number);
    }

    public abstract Weekday nextDay();
}

枚举类中的方法

toString() - String
name() - String
ordinal() - int
valueOf(String name) - Weekday
values() - Weekday[]
... ...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,906评论 18 399
  • 枚举类型是指由一组固定的常量组成合法值的类型,例如一年中的季节,太阳系中的行星或者一副牌中的花色。在编程语言...
    小小辉_710a阅读 5,283评论 0 0
  • 传送门 解读阿里Java开发手册(v1.1.1) - 异常日志 前言 阿里Java开发手册谈不上圣经,但确实是大量...
    kelgon阅读 9,819评论 4 50
  • 广告代理公司是不少人憧憬的业界。 在做现在这个工作前我也觉得那是个遥不可及的领域。 所有进出广告代理公司的员工都时...
    望少侠阅读 3,459评论 0 0