- 浏览: 123609 次
- 性别:
- 来自: 地球
文章分类
最新评论
-
754731046:
很适合对初学者适用,谢谢
Oracle存储过程详解 -
天明破晓:
我测试了,不好用
Java中的正则表达式验证各种电话号码 -
OracleX:
otom31 写道从来不用标签库,几乎不用struts,除了最 ...
标签库的优点、缺点大辩论 -
otom31:
从来不用标签库,几乎不用struts,除了最早公司要使用以外; ...
标签库的优点、缺点大辩论
一般项目中都习惯用单独的一个类定义系统中常用到底常量,可以达到便于集中管理、方便使用的目的:
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; } }
发表评论
-
AOP的实现(JDK动态代理)
2011-11-29 16:21 1004转自:http://www.blogjava.net/D ... -
Java 枚举7常见种用法
2011-11-27 22:54 891转自:http://helloyesyes.itey ... -
一个Java程序员应该掌握的10项技能
2011-11-18 11:57 10161、语法:必须比 ... -
Java回调函数使用
2011-08-16 16:14 719正常情况下开发人员使用已经定义好的API,这个过程叫 ... -
为什么要设置Java环境变量(详解)
2011-08-17 21:40 682从大二开始接触Java,之后是断断续续的学习。大三真正开始 ... -
很长空格的String转换成Array数组
2011-08-23 14:40 1298开发中碰到了一个需求,需要把键值对字符串分隔,但键值之 ... -
不同格式的日期字符串转换
2011-08-23 14:44 956先把字符串日期转换成对应的格式,然后再转换成日期 p ... -
用序列化(Serializable)保存、读取对象
2011-08-23 15:33 870实现Serializable借口的对象可以被转换成一系列 ... -
JUint测试
2011-08-23 15:36 659ClassA.java public class Cla ... -
解决Join方法的疑惑
2011-08-23 20:57 1012很长时间对join方法感到疑惑,不明白到底是谁要阻塞,谁要继 ... -
线程学习笔记【1】----进程、线程概念及创建线程
2011-08-27 22:33 8051.进程与线程 每个进程都独享一块内存空间,一个应用程 ... -
线程学习笔记【2】---Timer(定时器)
2011-08-28 09:15 781入门 public class Time01 { ... -
线程学习笔记【3】---互斥技术
2011-08-29 15:10 752第一个示例更多的是运用了内部类的特性: 内部类重要特点:可以 ... -
线程学习笔记【4】---线程之间通信
2011-08-29 17:31 751子线程先循环10次,然后主线程循环100次,再子线程循环10次 ... -
线程学习笔记【5】--ThreadLocal应用
2011-09-05 15:31 803基本的ThreadLocal使用 public clas ... -
各种创建单例模式的优缺点
2011-09-05 21:54 830单例模式应用于一个类只有一个实例的情况,并且为其实例提供一个全 ... -
格式化简单例子
2011-11-04 16:35 821参考:http://android.blog.51cto.co ... -
图片上传源码(commons-fileupload-1.2.2)分析
2011-11-03 11:20 2060题记:文章是供自己查看方便,所以没有进行格式化,请见谅 ... -
用序列化(Serializable)保存、读取对象
2011-08-23 15:56 922实现Serializable借口的对象可以被转换成一系 ... -
IO各种流使用清晰区别
2011-08-10 11:39 844引用:http://www.iteye.com/topic/1 ...
相关推荐
### Java语言基础入门教程知识点详解 #### 10. 枚举与泛型 ##### 10.1 枚举(Enum) **10.1.1 枚举定义** 枚举是一种特殊的类,用于定义那些取值范围固定且不会发生变化的数据类型。例如,性别、星期、月份等。 ...
代码如下:enum myWeekDay { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };int i = 3;myWeekDay today = (myWeekDay)i; 枚举是需要先声明的,然后再通过新建一个变量(today)为枚举类型...
**TypeScript教程入门指南详解案例教程** TypeScript是一种由微软开发的开源编程语言,它是JavaScript的一个超集,增加了静态类型、类和接口等特性,旨在提高代码的可维护性和开发效率。本教程将引导初学者逐步掌握...
031403_【第14章:枚举】_类集对Enum的支持笔记.pdf 031404_【第14章:枚举】_枚举的其他应用笔记.pdf 031501_【第15章:Java反射机制】_认识Class类笔记.pdf 031502_【第15章:Java反射机制】_Class类的使用笔记....
【C# 入门知识详解】 C# 是微软公司推出的一种现代化、面向对象的编程语言,它源于 C 和 C++,旨在结合 Visual Basic 的高效生产力和 C++ 的强大功能。C# 的设计目标是使代码更简洁、更安全,特别适合开发Windows...
### C# 快速入门教程知识点总结 #### 一、C# 语言简介与特点 - **C#** 是一种面向对象的编程语言,由微软公司于2000年首次发布,旨在结合C++的强大功能与Visual Basic的简单易用性。 - C# 设计之初就考虑到了与...
- 用户还可以定义自己的数据类型,如枚举类型(`enum`)和联合类型(`union`)。 2. **程序控制**: - 控制结构是编程的基础,包括条件语句(如`if`、`else if`、`else`)、循环语句(如`for`、`while`)等。 - ...
### protobuf入门知识点详解 #### 一、什么是protobuf protobuf(Protocol Buffers)是一种灵活、高效、自动化的结构化数据序列化方法,它不仅限于特定的编程语言或平台,可以在不同的环境中实现数据交换。相比于...
### Rust 语言入门教程知识点详解 #### 一、Rust 语言概述 Rust 是一种系统级编程语言,设计初衷是为了提高安全性而不牺牲性能。它由 Mozilla 基金会于 2010 年发布,近年来因其独特的内存安全特性和高性能而受到...
**C#入门介绍第三章源码详解** C#(读作"C Sharp")是一种由微软公司推出的面向对象的编程语言,被广泛应用于Windows桌面应用、游戏开发、移动应用以及Web服务等多个领域。本章节我们将深入探讨C#入门的第三章内容...
### Swift编程语言入门知识点详解 #### 一、Swift语言概览 Swift是一种现代的、高性能的编程语言,它被设计用于iOS、macOS、watchOS和tvOS的应用开发。Swift结合了传统编程语言的优点和现代语言特性,既适用于构建...
TypeScript的基本类型与JavaScript相同,但也有一些扩展,比如元组(Tuple)、枚举(enum)、any、void等。元组是一种特殊的数组,它允许存储固定数量和类型的元素,可以通过索引来访问每个元素。枚举则是一组命名...
此外,枚举类型(enum)提供了一种为整数常量命名的方式,提高了代码的可读性。 预处理器是C语言的另一个特色,它处理宏定义、文件包含和条件编译指令。宏定义可以创建简单的文本替换,而文件包含可以复用代码,...
### C# 入门到精通加强版:基础知识详解 #### C# 基础类型与变量 在 C# 编程语言中,了解基础数据类型和变量是非常重要的第一步。这有助于开发者有效地管理内存并编写出高效且可靠的代码。 **1. 类型概述** - **...
### AVR单片机C语言入门知识点详解 #### 一、AVR单片机与C语言基础 在开始之前,我们先来了解一下AVR单片机及其C语言编程的基础概念。 **1.1 AVR单片机简介** AVR是Atmel公司开发的一种8位微控制器系列,以其高...