`

java中枚举的使用

 
阅读更多

 enum 的全称为 enumeration, 是 JDK 1.5  中引入的新特性,存放在 java.lang 包中。

 创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式 Class Enum<E extends Enum<E>>,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。

下面来定义一个枚举类型:

package test;
public enum Week {
     MOn,Tue,WED,THU,TRI,SAT,SUN;	
}
 遍历枚举类型的代码如下:
public class Test3  {
	public static void main(String[] args) {
		for(Week w:Week.values()){
			System.out.println(w.);
		}
	}
}

 enum 对象的常用方法介绍

int compareTo(E o)                    比较此枚举与指定对象的顺序。

Class<E> getDeclaringClass()   返回与此枚举常量的枚举类型相对应的 Class 对象。

String name()                             返回此枚举常量的名称,在其枚举声明中对其进行声明。

int ordinal()                                 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。

String toString()                          返回枚举常量的名称,它包含在声明中。

static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) 

                                                   返回带指定名称的指定枚举类型的枚举常量。

原理分析

        enum 的语法结构尽管和 class 的语法不一样,但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum<E>。EnumTest 经过反编译(javap com.hmw.test.EnumTest 命令)之后得到的内容如下:

public class test.Week extends java.lang.Enum{
    public static final test.Week MON;
    public static final test.Week TUE;
    public static final test.Week WED;
    public static final test.Week THU;
    public static final test.Week FRI;
    public static final test.Week SAT;
    public static final test.Week SUN;
    static {};
    public int getValue();
    public boolean isRest();
    public static test.Week[] values();
    public static test.Week valueOf(java.lang.String);
    test.Week(java.lang.String, int, int, test.Week);
}

 所以,实际上 enum 就是一个 class,只不过 java 编译器帮我们做了语法的解析和编译而已。

总结

    可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。

分享到:
评论

相关推荐

    java枚举实例代码

    Java枚举(enum)是Java语言中的一种特殊数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中被引入,目的是为了更好地管理和使用常量,提高代码的可读性和安全性。在本实例代码中,...

    Java面试枚举从使用到原理

    本篇文章将深入探讨Java枚举的使用及其背后的原理。 一、枚举的定义与使用 1. 基本用法: 在Java中,枚举可以通过`enum`关键字来创建。例如,我们可以定义一个表示一周七天的枚举类型: ```java public enum ...

    说说Java中的枚举 转 可以了,够了 包括EnumSet(Map)

    这篇博客将深入探讨Java枚举的特性和使用方法,包括`EnumSet`和`EnumMap`这两个与枚举相关的数据结构。 首先,枚举定义的基本语法是`public enum EnumName {constant1, constant2, ...}`。每个枚举常量都是`...

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

    枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义...

    java enum 枚举 学习资料

    Java Enum 枚举学习资料是 Java 编程语言中的一种特殊类型,它主要用来实现一组固定的常量。 Enum 枚举类型是 Java 5 中引入的一种新特性,旨在解决传统的 int 枚举常量的缺陷。 1. 枚举语法 在 Java 中,枚举类型...

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

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

    在Java中使用枚举

    - Java中的枚举定义非常简洁,可以直接在枚举中定义值: ```java public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; } ``` - 与C++中的枚举不同,Java枚举默认是单例的,...

    Java枚举类型Enum的用法

    接下来,我们将深入探讨Java枚举类型的使用方法及其相关知识点。 1. **枚举的声明与初始化** 枚举类型的声明方式类似于类,但以`enum`关键字开头。例如: ```java enum Color { RED, GREEN, BLUE } ``` 这里...

    java中枚举的详细使用介绍

    - `compareTo`:比较枚举实例的顺序,基于它们在枚举中的定义顺序。 - `name`:返回枚举实例的名称,通常与定义时的标识符相同。 - `ordinal`:返回枚举值在枚举中的索引,从0开始。 - `toString`:返回枚举实例的...

    简单总结java枚举类型

    枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用。以下是关于Java枚举类型的详细解释和相关知识点: 1. 定义枚举: 在Java中,枚举通过关键字`enum`来定义。例如,创建...

    java枚举ppt和详细代码

    Java枚举可以方便地与集合框架一起使用。枚举类可以继承`EnumSet`或`EnumMap`,这两个类提供了针对枚举的优化操作。例如: ```java EnumSet&lt;Color&gt; colors = EnumSet.allOf(Color.class); ``` 通过学习上述知识...

    java枚举的一个实例

    Java枚举是编程语言Java中的一个特色特性,它在类、接口和变量的定义中扮演着...在JavaDemo项目中,可能包含了各种使用枚举的示例,包括但不限于上述讨论的各种用法,学习和理解这些示例有助于深入理解和应用Java枚举。

    java枚举类型说明

    使用Java枚举类型相比传统的`public static final`变量有许多优势: 1. **类型安全**: 枚举类型确保只能使用预定义的值,这有助于避免程序错误。 2. **自动实现接口**: 枚举类型自动实现了`Serializable`和`...

    java中enum枚举的详细用法

    Java中的枚举(enum)类型是在JDK 1.5版本引入的一个强大的特性,它用于定义一组相关的常量。在C/C++等语言中,枚举通常用来表示一组具有固定值的常量集合,但在Java中,枚举不仅限于此,它提供了更多的功能和灵活性...

    Java中的“枚举类型

    - **枚举元素的实例性质**:枚举中的每个元素实际上是一个对象实例,这意味着可以为这些元素添加额外的属性和行为。例如,为不同的季节分配特定的颜色或温度范围。 - **枚举类的可扩展性**:除了定义枚举元素外,...

    java枚举状态机

    在Java枚举中,每个状态可以是一个枚举常量,而状态间的转换可以通过定义方法来实现。 例如,假设我们有一个简单的订单处理系统,有"新建"、"处理中"和"完成"三个状态,可以这样定义枚举: ```java public enum ...

    Java中枚举类型的使用.docx

    本文将详细介绍如何在Java中使用枚举类型,并通过一个具体的例子来展示其优势。 #### 二、枚举类型概述 **枚举类型**是一种特殊的类,用于定义一组有限的固定常量。枚举类型可以提供更好的类型安全性和编译时检查...

    JAVA高级编程中Enum枚举

    5. **枚举常量的自然顺序**:枚举常量按照声明的顺序进行排序,可以用`ordinal()`方法获取其在枚举中的位置。 在实际编程中,枚举可以用于实现模式匹配、单例模式等多种设计模式。例如,可以定义一个状态枚举来表示...

    JAVA的枚举实例以及应用

    JAVA的枚举实例以及应用

Global site tag (gtag.js) - Google Analytics