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); } } }
相关推荐
下面我们将深入探讨enum的使用方法。 1. **定义枚举** 定义枚举的关键字是`enum`,例如: ```java public enum WeekDays { MON, TUE, WED, THU, FRI, SAT, SUN; } ``` 这里我们创建了一个名为`WeekDays`的...
在编程中,`enum`(枚举)类型是用来定义一组命名的整数常量,它在C++中被广泛使用。然而,在某些情况下,我们可能会遇到`enum`类型的重定义问题,这通常发生在包含不同库或者头文件时,因为这些库可能已经定义了...
本篇将通过"Java Enum使用Demo源码"深入探讨Java枚举的用法。 首先,枚举在Java中是一个类,可以通过`enum`关键字来声明。例如,我们可以创建一个表示星期的枚举类型: ```java public enum WeekDay { MONDAY, ...
enum枚举的方法
4. **使用私有构造函数**:虽然`Enum`禁止公开构造函数,但可以定义私有构造函数并在枚举体内部使用,以便为枚举值提供额外的信息或状态,如描述信息: ```java public enum Color { Red("This is Red"), Green...
枚举(Enum)在Java中是一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的常量表示方式。以下是对Enum的详细讲解: 1. **基本枚举定义**: ```java enum Color {BLUE, RED, GREEN;} ``` 这是...
枚举类型继承自`java.lang.Enum`,这意味着我们可以使用`Enum`类中定义的方法,如`name()`、`ordinal()`等。 #### 五、自定义枚举类 除了基本的定义方式外,还可以在枚举类型中定义方法和属性。例如: ```java ...
### Java 枚举类型 enum 的使用详解 #### 一、枚举类型概述 在 Java 中,枚举(enum)是一种特殊的类,它被用来表示一组固定的常量值。枚举类型自 JDK 1.5 开始引入,为开发者提供了一种更加安全、简洁的方式来...
在上面的示例中,我们使用 enum 来定义一个 `Signal` 枚举类型,并在 `TrafficLight` 类中使用 switch 语句来处理不同的信号状态。 用法三:添加新方法 如果我们想要在 enum 中添加新的方法,那么必须在 enum 实例...
本篇将详细介绍如何利用枚举(enum)来实现单例模式,并结合`Properties`类解析配置文件。 首先,我们来看一下传统的单例模式实现方式,如懒汉式和饿汉式,但这些方法在多线程环境下可能会存在问题。而使用枚举实现...
"Java Enum 枚举学习资料" Java Enum 枚举学习资料是 Java 编程语言中的一种特殊...Java Enum 枚举学习资料提供了一个详细的教程,涵盖了枚举语法、枚举类的特点、枚举类中的方法等方面的知识点,适合新手学习和实践。
c#遍历枚举(ENUM)类型的方法,简单实用,适合c#初学者
在枚举内部,可以通过`Enum<E extends Enum<E>>`的泛型方法`getDeclaringClass()`获取枚举常量所属的枚举类,以及`name()`和`ordinal()`方法获取常量的名称和在枚举中的位置。 总结来说,Java枚举类型提供了一种...
本文将深入探讨`enum`的简单使用方法以及如何结合委托(delegate)进行应用。 首先,我们来看如何声明一个枚举。在C#中,你可以使用`enum`关键字来创建一个新的枚举类型。下面是一个简单的例子: ```csharp public...
在Laravel框架中,"enum"(枚举)是一种实用的工具,用于限制特定属性或方法的值只能是预定义的一组。PHP在版本8.0中引入了对枚举的支持,这使得在 Laravel 开发中更加方便地处理固定选项的数据类型。本教程将深入...
Laravel Enum库是为Laravel应用程序设计的一个扩展,它允许开发者使用枚举类型来替代传统的常量或字符串,从而使得业务逻辑更清晰,减少错误的可能性。下面将详细探讨Laravel Enum的使用、优点以及如何在项目中实现...
在这个“enum 结构分析源码”资源中,我们主要关注的是C语言中的枚举使用和实现。C语言中的enum并不是一种真正的类型,而是对整型变量的一种别名,它提供了更易读的常量名称。 首先,我们来看`enum.c`这个源文件。...
Java 中枚举类 enum 的 values() 方法详解 ...在本文中,我们详细地介绍了 Java 中枚举类 enum 的 values() 方法的使用。通过使用 values() 方法,我们可以将枚举类转换为一个枚举类型的数组,从而方便地使用枚举类。
本文介绍了在Android中使用Anntation来代替ENUM的方法,分享给大家,具体如下: 如何代替 众所周知,在Android 开发中是不推荐使用java 中的ENUM 来编程的。因为ENUM 中每一个value 都会是一个Object 对象。跟常量...