`
jgnan
  • 浏览: 88899 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

每天JAVA简单教学:枚举类

阅读更多
今天给大家介绍一个JDK1.5的新特性:枚举类

先来看看以下的例子:
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方法都是写死的,如果我们想要自定义对比的方法,只能够写一个类似的公有方法。

而且枚举类也不可以继承或者实现接口,所以对于重用方面效果较差。

不过对于保存静态值来说,它还是很好用的,推荐大家尝试一下今后用它来保存常量。
  • 大小: 26.1 KB
分享到:
评论

相关推荐

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

    枚举(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 SE程序 Enum枚举类...

    Java手动方式创建枚举类示例

    Java手动方式创建枚举类示例 Java手动方式创建枚举类是一种常见的编程方法,在Java中可以使用枚举类型来定义一组具有相同特征的常量。通过手动方式创建枚举类,可以更好地控制枚举类型的行为和特性。在本文中,我们...

    计算机后端-Java-Java核心基础-第24章 集合01 02. 复习:枚举类.avi

    计算机后端-Java-Java核心基础-第24章 集合01 02. 复习:枚举类.avi

    Java中的“枚举类型

    在Java编程语言中,枚举(Enum)作为一种特殊的类,其设计初衷是为了更好地处理一组固定不变的常量集合。相较于传统的使用`static final`字段来表示常量的做法,枚举提供了更加丰富的特性和更为严谨的类型安全机制。...

    简单总结java枚举类型

    Java枚举类型是Java语言中一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的方式来表示一组有限的值。枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用...

    517.515.JAVA基础教程_集合-复习:枚举类(517).rar

    枚举不是简单的常量集合,而是一个完整的类,可以拥有方法、构造函数、字段和实现接口。枚举类的定义语法如下: ```java public enum Color { RED, GREEN, BLUE } ``` 在这个例子中,`Color`是一个枚举类,包含了...

    JAVA高级编程中Enum枚举

    在Java编程语言中,`Enum`(枚举)是一种特殊的类类型,用于定义固定的、预定义的常量集合。它们在程序设计中扮演着重要的角色,特别是在需要表示一组固定值时,如状态、颜色、星期等。本资源包提供了一些关于`Enum`...

    Java目录直读:枚举文件夹下的所有文件.rar

    Java枚举目录下的所有文件,列出文件名,是一个Java目录直读程序的例子,代码中定义了一个showDirContent方法,该方法实现取得目录内容,用路径实例化一个文件对象,重点:取得目录内所有文件列表,实例化一个...

    java枚举类用法

    Java枚举类型(enum)是Java语言中一种特殊的类,用于定义一组固定的常量。它在许多场景下作为替代常量或单例模式的选择,提供了更安全、更易读的代码。下面我们将深入探讨Java枚举类的用法及其优势。 1. **枚举的...

    java枚举类型说明

    Java中的枚举是一种特殊的类,用于定义一组固定的常量值。相比于传统的`public static final`变量,枚举提供了更多的灵活性和安全性。下面是一些关于Java枚举的基础知识点: - **定义**: 使用`enum`关键字定义枚举...

    java中的枚举类型

    Java 中的枚举类型 Java 中的枚举类型是一种特殊的数据类型,它允许我们定义一组命名的常量。枚举类型骨子里是一个类别,所以您编译完成后,会产生一个 `.class` 档案。 枚举类型的用法 在 Java 中,我们可以使用...

    Java编程基础教程:枚举与泛型的深入讲解

    其次对泛型的概念进行了解释,讨论了泛型类、泛型接口、泛型方法及其优势,最后探讨了枚举与泛型的结合使用方法。 适用人群:适用于具有一定Java编程基础的学习者和开发者,特别推荐给希望深入了解Java核心技术的...

    java枚举类的属性、方法和构造方法应用实战

    Java 枚举类的属性、方法和构造方法应用实战 Java 枚举类是一种特殊的类,它拥有自己的属性、方法和构造方法。本文将详细介绍 Java 枚举类的属性、方法和构造方法应用实战,结合实例形式分析了 Java 枚举类的定义、...

    Java面试枚举从使用到原理

    在Java编程语言中,枚举(Enumeration)是一种特殊的类,用于定义固定的、有限数量的值。在面试中,对枚举的理解和应用是衡量开发者专业技能的重要标准之一。本篇文章将深入探讨Java枚举的使用及其背后的原理。 一...

    Python语言基础:枚举类的使用.pptx

    虽然Python的标准库中没有内置的枚举类型,但自Python 3.4开始,引入了`enum`模块,提供了方便的枚举类来创建枚举对象。然而,在早期版本或者在不使用`enum`模块的情况下,开发者通常会使用字典或类来模拟枚举的特性...

    java枚举实例代码

    虽然枚举不能作为其他类的父类,但它们默认继承了 `java.lang.Enum` 类,这意味着枚举实例可以使用 `Comparable` 和 `Serializable` 接口的方法。 此外,枚举可以实现接口,这使得它们可以具有自定义的行为。例如:...

    java简单的 enum枚举类介绍

    java简单的 enum枚举类介绍

    Java试题-1:交通灯枚举

    Java试题-1:交通灯枚举 典型的Java面试题 有关于枚举的应用及交通灯枚举的答案

    java枚举结果类、根据状态值获取枚举值

    java枚举结果类、根据状态值获取枚举值 Controller: /** 模块类型枚举 */ model.addAttribute("mType", ModuleTypeEnum.ModuleTypeShow()); ftl: value="${mType.key}:${mType.value}” </#list>

Global site tag (gtag.js) - Google Analytics