枚举类.
文件名: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方法.返回的是枚举常量名称.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!