`
lovnet
  • 浏览: 6969197 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

枚举

 
阅读更多
为什么要有枚举
问题:要定义星期几或性别的变量,该怎么定义?假设用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

	}

}



分享到:
评论

相关推荐

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义...

    java枚举实例代码

    Java枚举(enum)是Java语言中的一种特殊数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中被引入,目的是为了更好地管理和使用常量,提高代码的可读性和安全性。在本实例代码中,...

    spring boot 枚举使用的坑整理

    Spring Boot 枚举使用的坑整理 Spring Boot 枚举使用的坑整理是指在使用 Spring Boot 枚举时可能出现的一些问题和解决方法的总结。枚举类型是一种特殊的数据类型,它具有固定的值,且这些值不会被修改。在 Java 中...

    Java中怎样由枚举常量的ordinal值获得枚举常量对象

    Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方  enum Season {  SPRING, SUMMER, AUTUMN, WINTER  }  定义了一个季节枚举类型。  在本例中,对于Season.SPRING这个...

    delphi枚举字符串转换

    在Delphi编程中,枚举(Enumeration)是一种强大的工具,用于定义一组相关的命名常量。枚举类型在处理固定集合的值时非常有用,而字符串转换则是编程中常见的操作,特别是在处理用户输入或数据交互时。当我们需要将...

    USB枚举详细过程剖析

    从驱动开发网看到一篇《USB枚举详细过程分析》,依据自己的理解和经验对原文稍加改动。本文仅供参考,一些顺序并不是固定的。  本文描述的是Windows系统的USB枚举过程,但对嵌入式系统自行开发的USB主机驱动程序也...

    枚举 USB HUB 设备

    在IT领域,枚举USB HUB设备是一项基础但至关重要的任务,它涉及到计算机硬件与操作系统之间的交互。USB(Universal Serial Bus)是一种通用串行总线标准,用于连接计算机系统和各种外设,如键盘、鼠标、打印机、扫描...

    mybatis入门实战之枚举类型

    本文将深入探讨在MyBatis中如何使用枚举类型,并通过实际的项目"mybatis入门实战之枚举类型"进行讲解。这个项目提供了一个简单的demo,非常适合初学者了解并实践MyBatis的TypeHandler机制。 首先,我们要明白枚举...

    java枚举类型说明

    ### Java枚举类型详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种重要的数据类型,在程序设计中扮演着不可或缺的角色。本文将深入探讨Java枚举类型的特性和用法,并通过具体实例说明其优势所在。枚举...

    USB枚举实例讲解\实例讲解USB的枚举(配置)过程

    ### USB枚举过程详解 #### 一、USB枚举概念 USB(Universal Serial Bus)即通用串行总线,是一种广泛应用于计算机领域的接口技术。USB设备连接到主机时,需要经历一个初始化和配置的过程,这一过程称为USB枚举。...

    windows下枚举串口的方法,超好用,跟设备管理器枚举一样

    在Windows操作系统中,尤其是Win7和Win10环境下,对串口进行枚举是一项常见的任务,这主要用于系统管理和设备调试。本文将详细讲解如何通过两种方法实现这一功能:注册表查询和SetupAPI。 首先,我们来看注册表枚举...

    C# 颜色枚举对照表

    1. **颜色枚举**:`Color` 枚举是 C# 中的一个枚举类型,它包含了大量预定义的颜色,如 `Red`, `Green`, `Blue` 等。这些颜色名称对应于特定的 ARGB(Alpha, Red, Green, Blue)值,每个颜色都可以通过其名称或对应...

    C#获取枚举Eumn的属性值,并绑定到控件

    在C#编程中,枚举(Eumn,可能是“Enum”的拼写错误)是一种强大的工具,用于定义一组相关的常量。枚举类型的每个值都关联一个名称,这使得代码更易读、更具可维护性。在某些场景下,我们需要获取枚举的属性值,比如...

    Matlab实现最基本的枚举和算法检查报告.zip_Matlab 枚举法_matlab 枚举_matlab 枚举量_matlab

    在MATLAB中,枚举(enumeration)是一种用于创建固定集合的整数常量的机制,通常用于替代硬编码的整数值,使代码更具可读性和可维护性。枚举在MATLAB中并不是一个内置的数据类型,但可以通过自定义结构体或者元胞...

    Java中的“枚举类型

    ### Java中的“枚举类型”知识点详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种特殊的类,其设计初衷是为了更好地处理一组固定不变的常量集合。相较于传统的使用`static final`字段来表示常量的做法...

    给枚举值增加扩展数据

    在编程中,枚举(Enum)是一种特殊的数据类型,用于定义一组预定义的常量,这些常量通常代表特定的值或状态。在C#等编程语言中,枚举可以帮助我们编写更清晰、更具可读性的代码。然而,标准枚举仅支持基本数据类型...

    代码 基于0-1整数规划隐枚举法离散型优化问题代码

    代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数...

    通过枚举反向给实体类赋值

    在Java编程中,枚举类型(Enum)是一种强大的工具,用于定义一组固定的常量。它在许多场景下比使用字符串或整数常量更安全、更易于管理。然而,在实际开发中,我们经常需要将枚举值反向映射到实体类的属性上,以便在...

    C++ SerialEnum 串口枚举实例

    `SerialEnum`在C++中通常指的是一个用于枚举计算机上可用串口的程序或类。在这个实例中,我们将深入探讨如何使用C++实现串口枚举功能,并了解相关的关键知识点。 首先,我们需要理解串口的基础知识。串行接口,简称...

    springboot项目中枚举类型的最佳实践

    在Spring Boot项目中,枚举类型(Enums)的使用是一种常见的数据表示方式,它们提供了类型安全和可维护性。本文将深入探讨如何在Spring Boot应用中实现枚举类型的最佳实践,包括前端与后端交互、数据库操作以及序列...

Global site tag (gtag.js) - Google Analytics