课时113:定义枚举结构

简介: 本内容为定义枚举结构的介绍。1.枚举的定义2.在枚举类中定义其它的结构.3.让枚举实现接口4.观察枚举中定义抽象方法

课时113:定义枚举结构


摘要:本内容为定义枚举结构的介绍。

1. 枚举的定义

2. 在枚举类中定义其它的结构.

3. 让枚举实现接口

4.观察枚举中定义抽象方法

 

01. 枚举的定义

 

枚举本身属于一种多例设计模式,在一个类中可以定义的结构非常多,例如:构造方法、普通方法、属性等,那么这些内容在枚举类中可以直接定义,但是需要注意枚举类中定义的构造方法不能采用非私有化定义( Public 无法使用)。

 

02.在枚举类中定义其它的结构.

 

Enum Color {  // 枚举类
RED ,GREEN,BLUE ; //实例化对象
Private string title ; // 定义属性
}

image.png

运行后发现错误,接着将代码中定义属性与实例化对象交换位置

Enum Color {  // 枚举类
Private string title ; // 定义属性
RED ,GREEN,BLUE ; //实例化对象
}

image.png

 

结论:枚举对象要写在首行

Enum Color {  // 枚举类
RED (“红色”) ,GREEN(“绿色”),BLUE(“蓝色”) ; //枚举对象要写在首行,多例设计中的每个实例都是常量,这是用大写字母的主要原因。
Private string title ; // 定义属性
Private Color(string title) {
This.title = title ;
}
Public string tostring() {
Return this.title ;
}
}
Puolic class JavaDemo {
Public static void main(string args[]) {
For (Color c:Color.values()) {
System.out.println(c.ordinal() + “-”+c.name() + “-”+ c);
}
  }
}

程序执行结果:

image.png

结论:本程序在简化程度上一定要远远高于多例设计模式(多例设计模式要写更多属性的定义,而枚举相对而言简单许多)。除了这种基本的结构之外,在枚举类中也可以实现接口的继承。

 

03.让枚举实现接口

 

Interface IMessage {
Public string getMessage() ;
}
Enum Color Interface IMessage {  // 枚举类
RED (“红色”) ,GREEN(“绿色”),BLUE(“蓝色”) ; //枚举对象要写在首行
Private string title ; // 定义属性
Private Color(string title) {
This.title = title ;
}
Public string tostring () {
Return this.title ;
}
Public string getmessage () {  //覆写方法
Return this.title ;
}
}
Puolic class JavaDemo {
Public static void main(string args []) {
   IMessage msg = Color.RED;
System.out.println(msg.getMessage());
  }
}

执行代码结果:成功

image.png

这个结构跟正常类的结构非常相似,在枚举类里它可以直接定义抽象方法,并且要求每一个枚举对象都要独立覆写此抽象方法。

 

04.观察枚举中定义抽象方法

 

Enum Color {  // 枚举类
RED (“红色”){ 
  Public string getmessage() {
Return this.tostring();
}
} ,GREEN(“绿色”){ 
  Public string getmessage() {
Return this.tostring() ;
}
},BLUE(“蓝色”){ 
  Public string getmessage() {
Return this .tostring();
}
} ; //枚举对象要写在首行
Private string title ; // 定义属性
Private Color(string title) {
This.title = title ;
}
Public string tostring () {
Return this.title ;
}
Public abstract string getmessage () ;
}
Puolic class JavaDemo {
Public static void main(string args []) {
System.out.println(Color.RED.getMessage());
  }
}

运行成功

image.png

结论:发现枚举的定义是非常灵活的,但是在实际的使用之中,枚举更多情况下建议使用它的正确用法(定义一个实例对象即可)。

相关文章
|
弹性计算 黑灰产治理
阿里云服务器续费流程及续费优惠券使用介绍(2023更新)
阿里云服务器怎么续费?新老用户分别有什么优惠?目前新用户续费阿里云服务器指定ECS实例可享4.5折优惠折扣,老用户开通包年自动续费享1次6.5折,开通包月自动续费享3次7.5折,现在续费还可以领取和使用阿里云续费优惠券,本文为大家介绍一下阿里云服务器续费流程及续费过程中如何使用续费优惠券。
6330 0
阿里云服务器续费流程及续费优惠券使用介绍(2023更新)
|
8月前
|
设计模式 Java uml
课时107:时序图
课时107介绍了时序图的描述与设计。时序图用于展示代码执行流程,如Java程序中接口IMessage、类MessageImpl及Factory的调用顺序。通过Power Designer创建UML Sequence Diagram,定义类操作结构并绘制消息传递路径,清晰呈现工厂模式下对象实例化和方法调用的过程。时序图帮助理解程序逻辑,适用于项目开发中的流程分析与文档记录。
319 1
|
9月前
|
开发工具 git
git fetch和 pull的区别
`git fetch`和 `git pull`在Git中扮演着不同的角色,了解它们的区别和使用场景对于高效管理代码库至关重要。通过合理使用这两个命令,可以更好地控制代码合并过程,减少冲突,提高团队协作效率。
807 97
|
9月前
|
人工智能 自然语言处理 API
快速使用 DeepSeek-R1 满血版
DeepSeek是一款基于Transformer架构的先进大语言模型,以其强大的自然语言处理能力和高效的推理速度著称。近年来,DeepSeek不断迭代,从DeepSeek-V2到参数达6710亿的DeepSeek-V3,再到性能比肩GPT-4的DeepSeek-R1,每次都带来重大技术突破。其开源策略降低了AI应用门槛,推动了AI普惠化。通过阿里云百炼调用满血版API,用户可以快速部署DeepSeek,享受高效、低成本的云端服务,最快10分钟完成部署,且提供免费token,极大简化了开发流程。
191706 31
快速使用 DeepSeek-R1 满血版
|
6月前
|
测试技术 API 开发者
LiveBench放榜:Qwen3斩获全球开源冠军
最新一期LiveBench榜单显示,阿里云旗舰模型Qwen3-235B-A22B荣登全球开源模型冠军,小尺寸Qwen3-32B位列Top3。千问3在指令遵循能力上超越多个顶级闭源模型,位居全球第一。该评测由图灵奖得主Yann LeCun发起,采用动态防污染机制,确保公平性。千问3支持119种语言,具备混合推理架构与强大Agent能力,现已上线阿里云百炼平台,提供免费体验与API调用。
524 10
|
8月前
|
NoSQL Java Redis
StringRedisTemplete使用
`StringRedisTemplate`是Spring Data Redis中非常实用的工具类,简化了与Redis交互的操作。通过本文的介绍,读者可以了解如何配置和使用 `StringRedisTemplate`进行基本的Redis操作,并应用于实际的开发场景中。掌握这些技巧,可以显著提高开发效率和代码质量。
309 16
|
8月前
|
存储 设计模式 Java
重学Java基础篇—ThreadLocal深度解析与最佳实践
ThreadLocal 是一种实现线程隔离的机制,为每个线程创建独立变量副本,适用于数据库连接管理、用户会话信息存储等场景。
290 5
|
8月前
|
设计模式 XML Java
设计模式觉醒系列(03)创建型模式的5个设计模式 | 一口气讲全讲透
本文详细介绍了设计模式中的创建型模式,包括建造者模式、原型模式、单例模式、工厂方法模式和抽象工厂模式。创建型模式关注对象的创建过程,隐藏了创建细节,以提高代码的可维护性和可扩展性。通过具体的实战demo和应用场景分析,展示了每种模式的特点和优势。例如,建造者模式适用于复杂对象的分步骤构建;原型模式通过复制对象实现高效复用;单例模式确保全局唯一实例;工厂方法模式和抽象工厂模式则提供了灵活的对象创建机制,支持多类型产品族的生产。这些模式在实际开发中能够简化客户端代码,提升系统灵活性和复用性。
|
8月前
|
设计模式 缓存 Java
重学Java基础篇—Java对象创建的7种核心方式详解
本文全面解析了Java中对象的创建方式,涵盖基础到高级技术。包括`new关键字`直接实例化、反射机制动态创建、克隆与反序列化复用对象,以及工厂方法和建造者模式等设计模式的应用。同时探讨了Spring IOC容器等框架级创建方式,并对比各类方法的适用场景与优缺点。此外,还深入分析了动态代理、Unsafe类等扩展知识及注意事项。最后总结最佳实践,建议根据业务需求选择合适方式,在灵活性与性能间取得平衡。
563 3
|
8月前
|
存储 设计模式 监控
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?
248 0
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?