Java高级编程--枚举类(Enum)
当类的对象只有有限个且确定时,可以使用枚举类型。即当需要定义一组常量时,虽然可以自定义静态常量然后通过'类.常量名'的方式进行调用,但使用上还是建议使用枚举类。
▾ 枚举类的使用
➢ JDK1.5之前需要自定义枚举类,JDK1.5新增的enum关键字用于定义枚举类。
➢ 若枚举只有一个对象, 则可以作为一种单例模式的实现方式。
枚举类的属性
☃ 枚举动类对象的属性不应允许被改动, 所以应该使用private final修饰
☃ 枚举类的使用private final修饰的属性如果要赋值应该在构造器中为其赋值
☃ 若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数
自定义枚举类
➀ 私有化类的构造器,保证不能在类的外部创建其对象
➁ 在类的内部创建枚举类的实例,声明为:public static final
➂ 对象如果有实例变量,应该声明为private final
,并在构造器中初始化
enum定义枚举类
☃ 使用enum定义的枚举类默认继承了java.lang.Enum类,因此不能再继承其他类但是可以实现其他类
☃ 枚举类的构造器只能使用 private 权限修饰符
☃ 枚举类的所有实例必须在枚举类中显式列出(,分隔 ;结尾)。列出的实例系统默认为public static final修饰
☃ 必须在枚举类的第一行声明枚举类对象
JDK 1.5中可以在switch 表达式中使用Enum定义的枚举类的对象作为表达式, case 子句可以直接使用枚举值的名字, 无需添加枚举类作为限定
Enum类的主要方法
方法名 | 详细描述 |
---|---|
valueOf | 获取与参数匹配的枚举常量。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。 |
toString | 默认获得当前枚举常量的名称,可重写toString方法 |
getDecalingClass | 获得枚举常量所属枚举类型的Class对象,可以判断两个枚举常量是否属于同一个枚举类型 |
name | 获得当前枚举常量的名称 |
ordinal | 获得当前枚举常量的次序 |
compareTo | 枚举类实现了Complarable接口,可以比较枚举常量的大小(按声明的顺序排列) |
clone | 枚举类型不能呗clone。为了防止子类实现克隆方法,Enum实现了一个仅抛出CloneNotSupportException异常的不变Clone() |
实现接口的枚举类
☃ 和普通Java类一样,枚举类可以实现一个或多个接口
☃ 若每个枚举值在调用实现的接口方法呈现相同的行为方式,则只要统一实现该方法即可
☃ 若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式,则可以让每个枚举值分别来实现该方法
本博客与CSDN博客༺ཌ༈君☠纤༈ད༻同步发布
__EOF__

本文链接:https://www.cnblogs.com/asio/p/13823849.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞