- 浏览: 88740 次
- 性别:
- 来自: 广州
最新评论
今天给大家介绍一个JDK1.5的新特性:枚举类
先来看看以下的例子:
上面我们就定义了一个枚举类。枚举类里面只会定义一系列的关键字,它的用法如下:
运行结果如下,可以用valueOf(String)的方式来查看是否有某个值,如果该值不存在会抛出一个异常(觉得不是很友好的设计。。。。)
这种类型对于保存一组常量的时候特别有效,即它很好地取代了以前的常量类。以下是没有枚举类之前的做法,这段代码等价于我们定义的枚举类:
大家可能会抱怨,这种枚举类不能存储多个值,即我们可能想要做到一个枚举常量,可以包含多个对应的值来里面,就比如上例,我们对外的变量可能是Monday,Tuesday之类的,实际保存的值可能是1,2,3。。。
其实还是能做到的:
这样,我们的枚举类就比较完整。
不过仍然有美中不足的地方,比如我们不能重写默认的equals方法。所有枚举类的equals方法都是写死的,如果我们想要自定义对比的方法,只能够写一个类似的公有方法。
而且枚举类也不可以继承或者实现接口,所以对于重用方面效果较差。
不过对于保存静态值来说,它还是很好用的,推荐大家尝试一下今后用它来保存常量。
先来看看以下的例子:
package enumdemo; public enum Weekdays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
上面我们就定义了一个枚举类。枚举类里面只会定义一系列的关键字,它的用法如下:
package enudemo; public class WeekdaysDemo { public static void main(String[] args) { System.out.println(Weekdays.Monday); System.out.println(Weekdays.Monday.getClass()); System.out.println(Weekdays.valueOf("Wednesday")); System.out.println(Weekdays.valueOf("Outofdays")); } }
运行结果如下,可以用valueOf(String)的方式来查看是否有某个值,如果该值不存在会抛出一个异常(觉得不是很友好的设计。。。。)
这种类型对于保存一组常量的时候特别有效,即它很好地取代了以前的常量类。以下是没有枚举类之前的做法,这段代码等价于我们定义的枚举类:
package enudemo; public final class WeekdayConstants { public static final String Monday = "Monday"; public static final String Tuesday = "Tuesday"; public static final String Wednesday = "Wednesday"; public static final String Thursday = "Thursday"; public static final String Friday = "Friday"; public static final String Saturday = "Saturday"; public static final String Sunday = "Sunday"; public String valueOf(String str) throws IllegalArgumentException { if(!(WeekdayConstants.Monday.equals(str)|| WeekdayConstants.Tuesday.equals(str)|| WeekdayConstants.Wednesday.equals(str)|| WeekdayConstants.Thursday.equals(str)|| WeekdayConstants.Friday.equals(str)|| WeekdayConstants.Saturday.equals(str)|| WeekdayConstants.Sunday.equals(str))) throw new IllegalArgumentException("Exception throws!"); return str; } }
大家可能会抱怨,这种枚举类不能存储多个值,即我们可能想要做到一个枚举常量,可以包含多个对应的值来里面,就比如上例,我们对外的变量可能是Monday,Tuesday之类的,实际保存的值可能是1,2,3。。。
其实还是能做到的:
package enudemo; public enum Weekdays { Monday(1,"Monday","Mon."), Tuesday(2,"Tuesday","Tue."), Wednesday(3,"Wednesday","Wed."), Thursday(4,"Thursday","Thur."), Friday(5,"Friday","Fri."), Saturday(6,"Saturday","Sat."), Sunday(0,"Sunday","Sun."); //存放星期全称的变量 private String fullname; //存放星期简称的变量 private String shortname; //存放星期索引的变量 private int idx; //Weekdays的构造函数,注意它的访问控制符必须为private private Weekdays(int idx,String fullname,String shortname){ this.idx = idx; this.fullname = fullname; this.shortname = shortname; } /** * 获取星期在一周中的索引值 * @return 星期的索引值, 0 - Sunday, 1 - Monday, .... 6 - Saturday */ public int getIndex(){ return idx; } /** * 获取星期的全称 * @return 星期的全称,如 Sunday, Monday... */ public String getFullName() { return fullname; } /** * 获取星期的简称 * @return 星期的简称,如 Sun., Mon. ... */ public String getShortName() { return shortname; } /** * 当我们打印这种实例时会显示它的全名 */ public String toString() { return fullname; } }
这样,我们的枚举类就比较完整。
不过仍然有美中不足的地方,比如我们不能重写默认的equals方法。所有枚举类的equals方法都是写死的,如果我们想要自定义对比的方法,只能够写一个类似的公有方法。
而且枚举类也不可以继承或者实现接口,所以对于重用方面效果较差。
不过对于保存静态值来说,它还是很好用的,推荐大家尝试一下今后用它来保存常量。
发表评论
-
JAVA简单教程:数据库操作(三)——PreparedStatement和动态SQL
2010-03-12 12:30 8686如果我们的SQL语句是固 ... -
JAVA简单教程:数据库操作(二)
2010-03-10 11:09 2168今天来分析一下上次的 ... -
JAVA简单教程:数据库操作(一)
2010-03-05 16:40 1902最近依然是事情太多,一直无法坚持每天写份blog,对不起大家。 ... -
每天JAVA简单教学:类定义,成员类,抽象类及接口类
2010-01-27 11:58 1601最近忙得快疯掉了,而且着凉了病得好辛苦。。。不过今天还是能抓紧 ... -
每天JAVA简单教学:类型强转
2010-01-19 11:56 7612关于类型,我们说了不 ... -
每天JAVA简单教学:简单数据类型、地址比较和值比较
2010-01-18 11:48 2302昨天说了布朗运算,今天详细解释一下其中的==运算符和Objec ... -
每天JAVA简单教学:布朗运算
2010-01-15 14:46 2276布朗值,就是true和false,对于产生这两个值的运算,就是 ... -
每天JAVA简单教学:基本运算符
2010-01-13 18:09 1089今天来介绍一些基础运算符,先用int整数类型做介绍,最后用St ... -
每天简单JAVA教学:循环语法(二)
2010-01-07 10:07 1507自从JRE升级到1.5以后,java的for循环就更加方便了。 ... -
每天简单JAVA教学:循环语法(一)
2010-01-06 13:32 2084现在开始介绍跟变成有密切关系的Java语法,首先来介绍循环的写 ... -
每天简单JAVA教学:super和this
2010-01-05 11:49 1576因为实在太忙这么多天来都没时间上来写东西,感觉非常对不起大家。 ... -
每天简单JAVA教学:变量
2009-12-28 16:02 1259很抱歉,最近事忙,所以很少有时间上来写东西,希望大家见谅。 ... -
每天简单JAVA教学:类继承,重写、重构及重载,final的用法
2009-12-23 12:25 4022昨天事忙,所以没时间给大家写blog,抱歉一下。 今天说的内 ... -
每天简单JAVA教学:JVM的内存管理,static的用法
2009-12-21 14:41 2606今天的主题是介绍static和final这两个指示器的用法。但 ... -
每天简单JAVA教学:Modifier
2009-12-18 10:31 9561昨天给大家介绍了怎么进行同一个类里面的方法调用,今天将会给大家 ... -
每天简单JAVA教学:方法的调用
2009-12-17 14:59 1278继续我们的简单教学。 ... -
每天简单JAVA教学:第一个main程序分析
2009-12-16 23:12 1581上次我们轻松地完成了H ... -
每天简单JAVA教学:Hello World!
2009-12-16 00:39 1545以下文章只适合新手,新是很新很新的新。。。。自认对编程和JAV ...
相关推荐
枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义...
Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类...
Java手动方式创建枚举类示例 Java手动方式创建枚举类是一种常见的编程方法,在Java中可以使用枚举类型来定义一组具有相同特征的常量。通过手动方式创建枚举类,可以更好地控制枚举类型的行为和特性。在本文中,我们...
计算机后端-Java-Java核心基础-第24章 集合01 02. 复习:枚举类.avi
在Java编程语言中,枚举(Enum)作为一种特殊的类,其设计初衷是为了更好地处理一组固定不变的常量集合。相较于传统的使用`static final`字段来表示常量的做法,枚举提供了更加丰富的特性和更为严谨的类型安全机制。...
Java枚举类型是Java语言中一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的方式来表示一组有限的值。枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用...
枚举不是简单的常量集合,而是一个完整的类,可以拥有方法、构造函数、字段和实现接口。枚举类的定义语法如下: ```java public enum Color { RED, GREEN, BLUE } ``` 在这个例子中,`Color`是一个枚举类,包含了...
在Java编程语言中,`Enum`(枚举)是一种特殊的类类型,用于定义固定的、预定义的常量集合。它们在程序设计中扮演着重要的角色,特别是在需要表示一组固定值时,如状态、颜色、星期等。本资源包提供了一些关于`Enum`...
Java枚举目录下的所有文件,列出文件名,是一个Java目录直读程序的例子,代码中定义了一个showDirContent方法,该方法实现取得目录内容,用路径实例化一个文件对象,重点:取得目录内所有文件列表,实例化一个...
Java枚举类型(enum)是Java语言中一种特殊的类,用于定义一组固定的常量。它在许多场景下作为替代常量或单例模式的选择,提供了更安全、更易读的代码。下面我们将深入探讨Java枚举类的用法及其优势。 1. **枚举的...
Java中的枚举是一种特殊的类,用于定义一组固定的常量值。相比于传统的`public static final`变量,枚举提供了更多的灵活性和安全性。下面是一些关于Java枚举的基础知识点: - **定义**: 使用`enum`关键字定义枚举...
Java 中的枚举类型 Java 中的枚举类型是一种特殊的数据类型,它允许我们定义一组命名的常量。枚举类型骨子里是一个类别,所以您编译完成后,会产生一个 `.class` 档案。 枚举类型的用法 在 Java 中,我们可以使用...
其次对泛型的概念进行了解释,讨论了泛型类、泛型接口、泛型方法及其优势,最后探讨了枚举与泛型的结合使用方法。 适用人群:适用于具有一定Java编程基础的学习者和开发者,特别推荐给希望深入了解Java核心技术的...
Java 枚举类的属性、方法和构造方法应用实战 Java 枚举类是一种特殊的类,它拥有自己的属性、方法和构造方法。本文将详细介绍 Java 枚举类的属性、方法和构造方法应用实战,结合实例形式分析了 Java 枚举类的定义、...
在Java编程语言中,枚举(Enumeration)是一种特殊的类,用于定义固定的、有限数量的值。在面试中,对枚举的理解和应用是衡量开发者专业技能的重要标准之一。本篇文章将深入探讨Java枚举的使用及其背后的原理。 一...
虽然Python的标准库中没有内置的枚举类型,但自Python 3.4开始,引入了`enum`模块,提供了方便的枚举类来创建枚举对象。然而,在早期版本或者在不使用`enum`模块的情况下,开发者通常会使用字典或类来模拟枚举的特性...
虽然枚举不能作为其他类的父类,但它们默认继承了 `java.lang.Enum` 类,这意味着枚举实例可以使用 `Comparable` 和 `Serializable` 接口的方法。 此外,枚举可以实现接口,这使得它们可以具有自定义的行为。例如:...
java简单的 enum枚举类介绍
Java试题-1:交通灯枚举 典型的Java面试题 有关于枚举的应用及交通灯枚举的答案
java枚举结果类、根据状态值获取枚举值 Controller: /** 模块类型枚举 */ model.addAttribute("mType", ModuleTypeEnum.ModuleTypeShow()); ftl: value="${mType.key}:${mType.value}” </#list>