枚举类.

Posted Dva清流

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举类.相关的知识,希望对你有一定的参考价值。

文件名:EnumDemo.java

设置员工休息日期的一个类.   看上去没有什么问题,但是休息的时间用的是int类型来表示,并且if/else的范围没有固定,使得安全性非常差.

就算在Setday中输入12也会得出结果周一到周五休息,没有考虑到安全性.其二问题是业务表达不明确, 没有确切的说明1是指星期一,在美国第一天是

星期天,解决这个方法专门去构建1个类Weekday,里面存放 业务表达明确,但是数据仍然是用int表示.所以仍然存在安全性的问题.

解决这一问题用封装思想,不用int类型.  改用自创的Weekday.

但是这样并不能解决问题,以为在任何地方都可以new出来新的Weekday(),所以要做到安全性最高,需要将Weekday构造器进行私有化处理. 以为如果要继续new出东西就需要重新用到构造器,将构造器私有化处理就相当于不能再下面自己私自的new Weekday()

 Week.XXX  static修饰的用类名.引用名称来调用.  MONDAY TUESDAY....是引用名.

 http://www.360doc.com/content/10/1221/12/1108510_80025379.shtml   封装

 

 

枚举类:

[修饰符] enum 枚举类名

{

常量A,常量B,常量C; 

}

----------------------------

我们自定义的枚举类型,在编译底层都是继承java.lang.Enum类的.Enum是所有枚举的父类.

API文档:

 

 枚举类声明的常量必须放在第一行.

枚举类不可以实例化.即不可以new. 它没有无参构造器.     调用父类构造器super(s,i) .含参

 

Enum覆盖了ToString方法.返回的是枚举常量名称.

 

以上是关于枚举类.的主要内容,如果未能解决你的问题,请参考以下文章

枚举类

枚举类

枚举类的使用

枚举类

枚举

java中的枚举类