Java 枚举类
2022/2/6 12:12:44
本文主要是介绍Java 枚举类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
参考:https://www.bilibili.com/video/BV1Kb411W75N
0x01 枚举类是什么
枚举类是一种类,它的特点是对象数量有限且确定(对象是写死的)。
当我们需要定义一组常量时(例如四季、周一到周日、12个月等),一般会使用枚举类。
0x02 如何定义枚举类
在jdk5.0之后,提供了enum关键字来定义枚举类,用enum关键字定义的枚举类默认继承于 java.lang.Enum 类
// 使用enum关键字定义枚举类 enum Season1 { // 1. 提供当前枚举类的对象,多个对象之间用“,”隔开,末尾对象用“;”结束 SPRING("春天", "春暖花开"), SUMMER("夏天", "夏日炎炎"), AUTUMN("秋天", "秋高气爽"), WINTER("冬天", "冰天雪地"); // 2. 声明Season对象的属性:用 private final 修饰 private final String seasonName; private final String seasonDesc; // 3. 私有化类的构造器,并给对象属性赋值 private Season1(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } // 4. 其它诉求:获取枚举类对象的属性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }
0x03 Enum类中的常用方法
Enum类中的常用方法有3个:
- values(): 返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。
- valueOf(String str): 可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。
- toString(): 返回当前枚举类对象常量的名称。
/** * 使用enum关键字定义枚举类 * 说明:定义的枚举类默认继承于 java.lang.Enum 类 */ public class SeasonTest1 { public static void main(String[] args) { Season1 summer = Season1.SUMMER; // toString(): System.out.println(summer.toString()); System.out.println("********************************"); // values(): Season1[] values = Season1.values(); for (int i = 0; i < values.length; i++) { System.out.println(values[i]); } // valueOf(String ovjName): 返回枚举类中对象名是objName的对象。 // 如果没有objName的枚举类对象,则抛异常:IllegalArgumentException Season1 winter = Season1.valueOf("WINTER"); // Season1 winter = Season1.valueOf("WINTER1"); System.out.println(winter); } } // 使用enum关键字定义枚举类 enum Season1 { // 1. 提供当前枚举类的对象,多个对象之间用“,”隔开,末尾对象用“;”结束 SPRING("春天", "春暖花开"), SUMMER("夏天", "夏日炎炎"), AUTUMN("秋天", "秋高气爽"), WINTER("冬天", "冰天雪地"); // 2. 声明Season对象的属性:用 private final 修饰 private final String seasonName; private final String seasonDesc; // 3. 私有化类的构造器,并给对象属性赋值 private Season1(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } // 4. 其它诉求:获取枚举类对象的属性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }
0x04 使用枚举类来实现接口
1、直接在enum类中重写接口中声明的抽象方法,这也是实现接口最惯用的方法,但有个问题是这样实现接口的话,枚举类中的不同对象调用的是同一个方法,调用的结果也都是相同的,如果我想让每个对象调用不同的方法,获得不同的结果,应该怎么办呢?
2、让枚举类中的每个对象分别实现接口中的抽象方法。
/** * 使用enum关键字定义枚举类 * 说明:定义的枚举类默认继承于 java.lang.Enum 类 */ public class SeasonTest1 { public static void main(String[] args) { Season1 summer = Season1.SUMMER; // 遍历Season1枚举类中每个对象的show方法 Season1[] values = Season1.values(); for (int i = 0; i < values.length; i++) { System.out.println(values[i]); values[i].show(); } // 调用WINTER的show方法 winter.show(); } } interface Info { void show(); } // 使用enum关键字定义枚举类 enum Season1 implements Info{ // 1. 提供当前枚举类的对象,多个对象之间用“,”隔开,末尾对象用“;”结束 SPRING("春天", "春暖花开") { @Override public void show() { System.out.println("春天在哪里"); } }, SUMMER("夏天", "夏日炎炎") { @Override public void show() { System.out.println("宁夏"); } }, AUTUMN("秋天", "秋高气爽") { @Override public void show() { System.out.println("秋天不回来"); } }, WINTER("冬天", "冰天雪地") { @Override public void show() { System.out.println("大约在冬季"); } }; // 2. 声明Season对象的属性:用 private final 修饰 private final String seasonName; private final String seasonDesc; // 3. 私有化类的构造器,并给对象属性赋值 private Season1(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } // 4. 其它诉求:获取枚举类对象的属性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }
这篇关于Java 枚举类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04敏捷管理与看板工具:提升研发、设计、电商团队工作效率的利器
- 2025-01-04智慧养老管理工具如何重塑养老生态?
- 2025-01-04如何打造高绩效销售团队:工具与管理方法的结合
- 2025-01-04解决电商团队协作难题,在线文档工具助力高效沟通
- 2025-01-04春节超市管理工具:解锁高效运营与顾客满意度的双重密码
- 2025-01-046种主流销售预测模型:如何根据场景选用最佳方案
- 2025-01-04外贸服务透明化:增强客户信任与合作的最佳实践
- 2025-01-04重新定义电商团队协作:在线文档工具的战略作用
- 2025-01-04Easysearch Java SDK 2.0.x 使用指南(三)
- 2025-01-04百万架构师第八课:设计模式:设计模式容易混淆的几个对比|JavaGuide