`
OracleX
  • 浏览: 123609 次
  • 性别: Icon_minigender_1
  • 来自: 地球
社区版块
存档分类
最新评论

Enum枚举入门详解

    博客分类:
  • J2SE
阅读更多

一般项目中都习惯用单独的一个类定义系统中常用到底常量,可以达到便于集中管理、方便使用的目的:

public class OldConstants {

	public static final int A = 1;
	public static final int B = 2;
	/**
	 * 有什么不好了,大家都这样用了很长时间了,没什么问题啊。
	 * 首先,它不是类型安全的,必须确保是int 
	 * 其次,还要确保它的范围是1和2
	 * 最后,很多时候打印出来的时候,只看到 1 和2 ,

	 */

	public static final String on = "ON";
	public static final String off = "OFF";
}
 

定义枚举

现在要做的是将枚举类当作常量使用,即将相关常量定义到一个枚举类中(这个类继承了Enum):

/**
 * 级别枚举 
 * 看做一个普通的类,不能继承其他类(java是单继承,它已经继承了Enum)
 * 可以添加其他方法,覆盖它本身的方法
 */
public enum GradeEnum {
	A, B, C, D, E, incomplete, F;
}

 使用枚举

public class Student {

	private String firstName;
	private String lastName;
	private GradeEnum gradeEnum;

	public Student(String firstName, String lastName) {
		this.firstName = firstName;
		this.lastName = lastName;
	}

	public String getFullName() {
		return new StringBuffer(firstName).append("").append(lastName)
				.toString();
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	//枚举类型
	public GradeEnum getGradeEnum() {
		return gradeEnum;
	}

	public void setGradeEnum(GradeEnum gradeEnum) {
		this.gradeEnum = gradeEnum;
	}

}

 遍历枚举

	/**
	 * 遍历枚举值
	 */
	public static void listGradeValues() {
		// 增强的for循环
		for (GradeEnum g : GradeEnum.values()
) {// 返回的是由GradeEnum实例组成的数组
			System.out.println("级别有:" + g);
		}
	}

 switch中使用枚举

public static void switchStatement() {
		Student student = new Student("hello", "Enum");
		StringBuffer outPutText = new StringBuffer(student.getFullName());
		switch (student.getGradeEnum()) {
		case A:
			outPutText.append("excelled with a grade of A");
			break;
		case B:
		case C:
			outPutText.append("passed with a grade of").append(student.getGradeEnum().toString());
			break;
		case D:
		case E:
			outPutText.append("failed with a grade of").append(student.getGradeEnum().toString());
			break;
		case incomplete:
			outPutText.append("did not complete the class");
			break;
		default:
			outPutText.append("has a grade of").append(student.getGradeEnum().toString());
		}
		System.out.println(outPutText.toString());
			
	}

 保持良好的编程习惯,应该在switch中添加default语句,如果定义的枚举被人改动了也不会造成错误

/**
 * 级别-枚举类型
 *
 */
public enum GradeEnum {
	A,B,C,D,E,incomplete,F
;
}

  枚举在什么地方适用

一条普遍规则是,任何使用常量的地方,例如目前用switch   代码切换常量的地方。如果只有单独一个值(例如,鞋的最大尺寸,或者笼子中能装猴子的最大数目),则还是把这个任务留给常量吧。

但是,如果定义了一组值,而这些值中的任何一个都可以用于特定的数据类型,那么将枚举用在这个地方最适合不过,比如说性别、颜色、星期等。

public enum SexEnum {

  male, female;

}
 
public enum Color {

  RED, BLUE,GREEN,BLACK;

}
  
public enum WeekDay {

	Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri(

	"Friday"), Sat("Saturday"), Sun("Sunday");

	private final String day;

	private WeekDay(String day) {  //构造方法默认是private类型,不能是public

		this.day = day;

	}

	public String getDay() {

		return day;

	}

}
分享到:
评论

相关推荐

    Java语言基础入门教程 Java实训教程 10.枚举与泛型 共27页.pptx

    ### Java语言基础入门教程知识点详解 #### 10. 枚举与泛型 ##### 10.1 枚举(Enum) **10.1.1 枚举定义** 枚举是一种特殊的类,用于定义那些取值范围固定且不会发生变化的数据类型。例如,性别、星期、月份等。 ...

    c#入门之枚举和结构体使用详解(控制台接收字符串以相反的方向输出)

    代码如下:enum myWeekDay { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };int i = 3;myWeekDay today = (myWeekDay)i; 枚举是需要先声明的,然后再通过新建一个变量(today)为枚举类型...

    TypeScript教程入门指南详解案例教程

    **TypeScript教程入门指南详解案例教程** TypeScript是一种由微软开发的开源编程语言,它是JavaScript的一个超集,增加了静态类型、类和接口等特性,旨在提高代码的可维护性和开发效率。本教程将引导初学者逐步掌握...

    Java开发详解.zip

    031403_【第14章:枚举】_类集对Enum的支持笔记.pdf 031404_【第14章:枚举】_枚举的其他应用笔记.pdf 031501_【第15章:Java反射机制】_认识Class类笔记.pdf 031502_【第15章:Java反射机制】_Class类的使用笔记....

    c#入门第2讲+C#基础

    【C# 入门知识详解】 C# 是微软公司推出的一种现代化、面向对象的编程语言,它源于 C 和 C++,旨在结合 Visual Basic 的高效生产力和 C++ 的强大功能。C# 的设计目标是使代码更简洁、更安全,特别适合开发Windows...

    最简单的C#快速入门教程

    ### C# 快速入门教程知识点总结 #### 一、C# 语言简介与特点 - **C#** 是一种面向对象的编程语言,由微软公司于2000年首次发布,旨在结合C++的强大功能与Visual Basic的简单易用性。 - C# 设计之初就考虑到了与...

    C++入门经典(第3版)

    - 用户还可以定义自己的数据类型,如枚举类型(`enum`)和联合类型(`union`)。 2. **程序控制**: - 控制结构是编程的基础,包括条件语句(如`if`、`else if`、`else`)、循环语句(如`for`、`while`)等。 - ...

    protobuf入门

    ### protobuf入门知识点详解 #### 一、什么是protobuf protobuf(Protocol Buffers)是一种灵活、高效、自动化的结构化数据序列化方法,它不仅限于特定的编程语言或平台,可以在不同的环境中实现数据交换。相比于...

    Rust语言入门教程&代码示例.pdf

    ### Rust 语言入门教程知识点详解 #### 一、Rust 语言概述 Rust 是一种系统级编程语言,设计初衷是为了提高安全性而不牺牲性能。它由 Mozilla 基金会于 2010 年发布,近年来因其独特的内存安全特性和高性能而受到...

    C#入门介绍第三章源码

    **C#入门介绍第三章源码详解** C#(读作"C Sharp")是一种由微软公司推出的面向对象的编程语言,被广泛应用于Windows桌面应用、游戏开发、移动应用以及Web服务等多个领域。本章节我们将深入探讨C#入门的第三章内容...

    swift编程入门(非常详细)从零基础入门到精通.docx

    ### Swift编程语言入门知识点详解 #### 一、Swift语言概览 Swift是一种现代的、高性能的编程语言,它被设计用于iOS、macOS、watchOS和tvOS的应用开发。Swift结合了传统编程语言的优点和现代语言特性,既适用于构建...

    详解Vue3.0 前的 TypeScript 最佳入门实践

    TypeScript的基本类型与JavaScript相同,但也有一些扩展,比如元组(Tuple)、枚举(enum)、any、void等。元组是一种特殊的数组,它允许存储固定数量和类型的元素,可以通过索引来访问每个元素。枚举则是一组命名...

    C语言的基本知识详解

    此外,枚举类型(enum)提供了一种为整数常量命名的方式,提高了代码的可读性。 预处理器是C语言的另一个特色,它处理宏定义、文件包含和条件编译指令。宏定义可以创建简单的文本替换,而文件包含可以复用代码,...

    C#入门到精通加强版.

    ### C# 入门到精通加强版:基础知识详解 #### C# 基础类型与变量 在 C# 编程语言中,了解基础数据类型和变量是非常重要的第一步。这有助于开发者有效地管理内存并编写出高效且可靠的代码。 **1. 类型概述** - **...

    AVR单片机C语言入门

    ### AVR单片机C语言入门知识点详解 #### 一、AVR单片机与C语言基础 在开始之前,我们先来了解一下AVR单片机及其C语言编程的基础概念。 **1.1 AVR单片机简介** AVR是Atmel公司开发的一种8位微控制器系列,以其高...

Global site tag (gtag.js) - Google Analytics