为什么要有枚举
问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外。
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。
私有的构造方法
每个元素分别用一个公有的静态成员变量表示
可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。
枚举的基本应用
举例:定义一个Weekday的枚举。
扩展:枚举类的values,valueOf,name,toString,ordinal等方法(记住,讲课时要先于自定义方法前介绍,讲课更流畅)
总结:枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象,例如可以调用WeekDay.SUN.getClass().getName和WeekDay.class.getName()。
枚举的高级应用
枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。
枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。
带构造方法的枚举
构造方法必须定义成私有的
如果有多个构造方法,该如何选择哪个构造方法?
枚举元素MON和MON()的效果一样,都是调用默认的构造方法。
带方法的枚举
定义枚举TrafficLamp
实现普通的next方法
实现抽象的next方法:每个元素分别是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义。
增加上表示时间的构造方法
枚举只有一个成员时,就可以作为一种单例的实现方式。
Demo:
package cn.itcast;
public enum WeakDay {
MONDAY {
@Override
public WeakDay nextDay() {
return TUESDAY;
}
},TUESDAY {
@Override
public WeakDay nextDay() {
return null;
}
};
private WeakDay() {
System.out.println("constructor:" + this);
}
public abstract WeakDay nextDay();
}
package cn.itcast;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("begin");
WeakDay weakDay1 = WeakDay.MONDAY;
System.out.println("syso1");
System.out.println(weakDay1);
System.out.println(weakDay1.nextDay());
// 后台打印:
// begin
// constructor:MONDAY
// constructor:TUESDAY
// syso1
// MONDAY
// TUESDAY
}
}
分享到:
相关推荐
枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义...
Java枚举(enum)是Java语言中的一种特殊数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中被引入,目的是为了更好地管理和使用常量,提高代码的可读性和安全性。在本实例代码中,...
Spring Boot 枚举使用的坑整理 Spring Boot 枚举使用的坑整理是指在使用 Spring Boot 枚举时可能出现的一些问题和解决方法的总结。枚举类型是一种特殊的数据类型,它具有固定的值,且这些值不会被修改。在 Java 中...
Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方 enum Season { SPRING, SUMMER, AUTUMN, WINTER } 定义了一个季节枚举类型。 在本例中,对于Season.SPRING这个...
在Delphi编程中,枚举(Enumeration)是一种强大的工具,用于定义一组相关的命名常量。枚举类型在处理固定集合的值时非常有用,而字符串转换则是编程中常见的操作,特别是在处理用户输入或数据交互时。当我们需要将...
从驱动开发网看到一篇《USB枚举详细过程分析》,依据自己的理解和经验对原文稍加改动。本文仅供参考,一些顺序并不是固定的。 本文描述的是Windows系统的USB枚举过程,但对嵌入式系统自行开发的USB主机驱动程序也...
在IT领域,枚举USB HUB设备是一项基础但至关重要的任务,它涉及到计算机硬件与操作系统之间的交互。USB(Universal Serial Bus)是一种通用串行总线标准,用于连接计算机系统和各种外设,如键盘、鼠标、打印机、扫描...
本文将深入探讨在MyBatis中如何使用枚举类型,并通过实际的项目"mybatis入门实战之枚举类型"进行讲解。这个项目提供了一个简单的demo,非常适合初学者了解并实践MyBatis的TypeHandler机制。 首先,我们要明白枚举...
### Java枚举类型详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种重要的数据类型,在程序设计中扮演着不可或缺的角色。本文将深入探讨Java枚举类型的特性和用法,并通过具体实例说明其优势所在。枚举...
### USB枚举过程详解 #### 一、USB枚举概念 USB(Universal Serial Bus)即通用串行总线,是一种广泛应用于计算机领域的接口技术。USB设备连接到主机时,需要经历一个初始化和配置的过程,这一过程称为USB枚举。...
在Windows操作系统中,尤其是Win7和Win10环境下,对串口进行枚举是一项常见的任务,这主要用于系统管理和设备调试。本文将详细讲解如何通过两种方法实现这一功能:注册表查询和SetupAPI。 首先,我们来看注册表枚举...
1. **颜色枚举**:`Color` 枚举是 C# 中的一个枚举类型,它包含了大量预定义的颜色,如 `Red`, `Green`, `Blue` 等。这些颜色名称对应于特定的 ARGB(Alpha, Red, Green, Blue)值,每个颜色都可以通过其名称或对应...
在C#编程中,枚举(Eumn,可能是“Enum”的拼写错误)是一种强大的工具,用于定义一组相关的常量。枚举类型的每个值都关联一个名称,这使得代码更易读、更具可维护性。在某些场景下,我们需要获取枚举的属性值,比如...
在MATLAB中,枚举(enumeration)是一种用于创建固定集合的整数常量的机制,通常用于替代硬编码的整数值,使代码更具可读性和可维护性。枚举在MATLAB中并不是一个内置的数据类型,但可以通过自定义结构体或者元胞...
### Java中的“枚举类型”知识点详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种特殊的类,其设计初衷是为了更好地处理一组固定不变的常量集合。相较于传统的使用`static final`字段来表示常量的做法...
在编程中,枚举(Enum)是一种特殊的数据类型,用于定义一组预定义的常量,这些常量通常代表特定的值或状态。在C#等编程语言中,枚举可以帮助我们编写更清晰、更具可读性的代码。然而,标准枚举仅支持基本数据类型...
代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数...
在Java编程中,枚举类型(Enum)是一种强大的工具,用于定义一组固定的常量。它在许多场景下比使用字符串或整数常量更安全、更易于管理。然而,在实际开发中,我们经常需要将枚举值反向映射到实体类的属性上,以便在...
`SerialEnum`在C++中通常指的是一个用于枚举计算机上可用串口的程序或类。在这个实例中,我们将深入探讨如何使用C++实现串口枚举功能,并了解相关的关键知识点。 首先,我们需要理解串口的基础知识。串行接口,简称...
在Spring Boot项目中,枚举类型(Enums)的使用是一种常见的数据表示方式,它们提供了类型安全和可维护性。本文将深入探讨如何在Spring Boot应用中实现枚举类型的最佳实践,包括前端与后端交互、数据库操作以及序列...