`

enum使用方法

 
阅读更多

 JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便。
用法一:常量
在JDK1.5 之前,我们定义常量都是: public static final....现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

 

public enum Color {  
 RED, GREEN, BLANK, YELLOW  
}  

 用法二: switch
JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

enum Signal {  
    GREEN, YELLOW, RED  
}

public class TrafficLight {

	public void change(Signal color) {
		switch (color) {
		case RED:
			System.out.println("红色");
			break;
		case YELLOW:
			System.out.println("绿色");
			break;
		case GREEN:
			System.out.println("绿色");
			break;
		}
	}
}

  

 用法三: 向枚举中添加新方法
 
如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。

public enum Color {
	// 如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。
	RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
	// 成员变量
	private String name;
	private int index;
	// 构造方法(只能为私有)
	private Color(String name, int index) {
		this.name = name;
		this.index = index;
	}
	// 普通方法
	public static String getName(int index) {
		for (Color c : Color.values()) {
			if (c.getIndex() == index) {
				return c.name;
			}
		}
		return null;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getIndex() {
		return index;
	}
	public void setIndex(int index) {
		this.index = index;
	}
	public String toString() {
		return this.index + "_" + this.name;
	}
}

 四、枚举项实例

import java.util.EnumMap;
import java.util.EnumSet;

public class LightTest {
	// 1.定义枚举类型
	public enum Light {
		// 利用构造函数传参
		RED(1), GREEN(3), YELLOW(2);
		// 定义私有变量
		private int nCode;
		// 构造函数,枚举类型只能为私有
		private Light(int _nCode) {
			this.nCode = _nCode;
		}
		@Override
		public String toString() {
			return String.valueOf(this.nCode);
		}	
	}
	public static void main(String[] args) {
		// 1.遍历枚举类型
		System.out.println("演示枚举类型的遍历 ......");
		testTraversalEnum();
		// 2.演示EnumMap对象的使用
		System.out.println("演示EnmuMap对象的使用和遍历.....");
		testEnumMap();
		// 3.演示EnmuSet的使用
		System.out.println("演示EnmuSet对象的使用和遍历.....");
		testEnumSet();
	}
	/**	 * 
	 * 演示枚举类型的遍历
	 */
	private static void testTraversalEnum() {
		Light[] allLight = Light.values();
		for (Light aLight : allLight) {
			//枚举项实例默认属性name,即常量本身
			System.out.println("当前灯name:" + aLight.name());
			//枚举项实例默认方法, 即位置
			System.out.println("当前灯ordinal:" + aLight.ordinal());
			//打印toString方法
			System.out.println("当前灯:" + aLight);
		}
	}
	/**
	 * 演示EnumMap的使用,EnumMap跟HashMap的使用差不多,只不过key要是枚举类型
	 */
	private static void testEnumMap() {
		// 1.演示定义EnumMap对象,EnumMap对象的构造函数需要参数传入,默认是key的类的类型
		EnumMap<Light, String> currEnumMap = new EnumMap<Light, String>(Light.class);
		currEnumMap.put(Light.RED, "红灯");
		currEnumMap.put(Light.GREEN, "绿灯");
		currEnumMap.put(Light.YELLOW, "黄灯");
		// 2.遍历对象
		for (Light aLight : Light.values()) {
			System.out.println("[key=" + aLight.name() + ",value="+ currEnumMap.get(aLight) + "]");
		}
	}
	/**
	 * 演示EnumSet如何使用,EnumSet是一个抽象类,获取一个类型的枚举类型内容<BR/>
	 * 可以使用allOf方法
	 */
	private static void testEnumSet() {
		EnumSet<Light> currEnumSet = EnumSet.allOf(Light.class);
		for (Light aLightSetElement : currEnumSet) {
			System.out.println("当前EnumSet中数据为:" + aLightSetElement);
		}
	}
}

 

 

 

 

 

 

分享到:
评论

相关推荐

    java 中enum的使用方法详解

    下面我们将深入探讨enum的使用方法。 1. **定义枚举** 定义枚举的关键字是`enum`,例如: ```java public enum WeekDays { MON, TUE, WED, THU, FRI, SAT, SUN; } ``` 这里我们创建了一个名为`WeekDays`的...

    enum类型重定义解决方法

    在编程中,`enum`(枚举)类型是用来定义一组命名的整数常量,它在C++中被广泛使用。然而,在某些情况下,我们可能会遇到`enum`类型的重定义问题,这通常发生在包含不同库或者头文件时,因为这些库可能已经定义了...

    Java Enum使用Demo源码

    本篇将通过"Java Enum使用Demo源码"深入探讨Java枚举的用法。 首先,枚举在Java中是一个类,可以通过`enum`关键字来声明。例如,我们可以创建一个表示星期的枚举类型: ```java public enum WeekDay { MONDAY, ...

    enum枚举的方法

    enum枚举的方法

    Enum的用法

    4. **使用私有构造函数**:虽然`Enum`禁止公开构造函数,但可以定义私有构造函数并在枚举体内部使用,以便为枚举值提供额外的信息或状态,如描述信息: ```java public enum Color { Red("This is Red"), Green...

    Enum汇总大全详细讲解

    枚举(Enum)在Java中是一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的常量表示方式。以下是对Enum的详细讲解: 1. **基本枚举定义**: ```java enum Color {BLUE, RED, GREEN;} ``` 这是...

    Java中的Enum的使用与分析

    枚举类型继承自`java.lang.Enum`,这意味着我们可以使用`Enum`类中定义的方法,如`name()`、`ordinal()`等。 #### 五、自定义枚举类 除了基本的定义方式外,还可以在枚举类型中定义方法和属性。例如: ```java ...

    java枚举类型enum的使用

    ### Java 枚举类型 enum 的使用详解 #### 一、枚举类型概述 在 Java 中,枚举(enum)是一种特殊的类,它被用来表示一组固定的常量值。枚举类型自 JDK 1.5 开始引入,为开发者提供了一种更加安全、简洁的方式来...

    Java enum的用法详解

    在上面的示例中,我们使用 enum 来定义一个 `Signal` 枚举类型,并在 `TrafficLight` 类中使用 switch 语句来处理不同的信号状态。 用法三:添加新方法 如果我们想要在 enum 中添加新的方法,那么必须在 enum 实例...

    用enum实现单例模式的方法来读取配置文件

    本篇将详细介绍如何利用枚举(enum)来实现单例模式,并结合`Properties`类解析配置文件。 首先,我们来看一下传统的单例模式实现方式,如懒汉式和饿汉式,但这些方法在多线程环境下可能会存在问题。而使用枚举实现...

    java enum 枚举 学习资料

    "Java Enum 枚举学习资料" Java Enum 枚举学习资料是 Java 编程语言中的一种特殊...Java Enum 枚举学习资料提供了一个详细的教程,涵盖了枚举语法、枚举类的特点、枚举类中的方法等方面的知识点,适合新手学习和实践。

    c#遍历枚举(ENUM)类型的方法

    c#遍历枚举(ENUM)类型的方法,简单实用,适合c#初学者

    Java枚举类型Enum的用法

    在枚举内部,可以通过`Enum&lt;E extends Enum&lt;E&gt;&gt;`的泛型方法`getDeclaringClass()`获取枚举常量所属的枚举类,以及`name()`和`ordinal()`方法获取常量的名称和在枚举中的位置。 总结来说,Java枚举类型提供了一种...

    enum 简单使用例子

    本文将深入探讨`enum`的简单使用方法以及如何结合委托(delegate)进行应用。 首先,我们来看如何声明一个枚举。在C#中,你可以使用`enum`关键字来创建一个新的枚举类型。下面是一个简单的例子: ```csharp public...

    Laravel开发-enum

    在Laravel框架中,"enum"(枚举)是一种实用的工具,用于限制特定属性或方法的值只能是预定义的一组。PHP在版本8.0中引入了对枚举的支持,这使得在 Laravel 开发中更加方便地处理固定选项的数据类型。本教程将深入...

    Laravel开发-laravel-enum

    Laravel Enum库是为Laravel应用程序设计的一个扩展,它允许开发者使用枚举类型来替代传统的常量或字符串,从而使得业务逻辑更清晰,减少错误的可能性。下面将详细探讨Laravel Enum的使用、优点以及如何在项目中实现...

    enum 结构分析源码

    在这个“enum 结构分析源码”资源中,我们主要关注的是C语言中的枚举使用和实现。C语言中的enum并不是一种真正的类型,而是对整型变量的一种别名,它提供了更易读的常量名称。 首先,我们来看`enum.c`这个源文件。...

    java 中枚举类enum的values()方法的详解

    Java 中枚举类 enum 的 values() 方法详解 ...在本文中,我们详细地介绍了 Java 中枚举类 enum 的 values() 方法的使用。通过使用 values() 方法,我们可以将枚举类转换为一个枚举类型的数组,从而方便地使用枚举类。

    在Android中使用Anntation来代替ENUM的方法

    本文介绍了在Android中使用Anntation来代替ENUM的方法,分享给大家,具体如下: 如何代替 众所周知,在Android 开发中是不推荐使用java 中的ENUM 来编程的。因为ENUM 中每一个value 都会是一个Object 对象。跟常量...

Global site tag (gtag.js) - Google Analytics