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

JAVA中枚举(Enum)的系列文章 - 反向查找、总结

阅读更多
转自:http://www.sinojava.com/bbs/redirect.php?tid=1316&goto=lastpost

JAVA中枚举(Enum)的系列文章 - 反向查找、总结
在就是一个类一文中说到枚举也可以自定义构造函数,可以用属性来关联更多的数据。那如果我们有这样的一种需要该怎么办呢?——我们需要根据关联的数据来得到相应的枚举项,例如下面的这种情况:
复制内容到剪贴板代码:

public final enum Status {
  WAITING(0),
  READY(1),
  SKIPPED(-1),
  COMPLETED(5);
  private int code;
  private Status(int code) {
    this.code = code;
  }
  public int getCode() {
    class="t_tag">return code;
  }
}
这里每种Status对应了一个code,WAITING对应了0,而COMPLETED对应了5。如果想通过0得到WAITING这个枚举项要怎么做?

    做法也很简单,使用一个静态的java.util.Map来把code和枚举项关联起来就可以了,就像这样:
复制内容到剪贴板代码:
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;

enum Status {

WAITING(0),

READY(1),

SKIPPED(-1),

COMPLETED(5);

private static final Map lookup = new HashMap();

static {

for (Status s : EnumSet.allOf(Status.class)) {

lookup.put(s.getCode(), s);

}

}

public static Status get(int code) {

return lookup.get(code);

}

private int code;

private Status(int code) {

this.code = code;

}

public int getCode() {
return code;
}

}
静态方法get(int)提供了需求中的反向查找能力,而静态块里使用EnumSet来把起映射做用的Map组装起来,Over!

总结:使用枚举,但不要滥用!

    学习任何新版语言的一个危险就是疯狂使用新的语法结构。如果这样做,那么您的代码就会突然之间有 80% 是泛型、标注和枚举。所以,应当只在适合使用枚举的地方才使用它。那么,枚举在什么地方适用呢?一条普遍规则是,任何使用常量的地方,例如目前用 switch 代码切换常量的地方。如果只有单独一个值(例如,鞋的最大尺寸,或者笼子中能装猴子的最大数目),则还是把这个任务留给常量吧。但是,如果定义了一组值,而这些值中的任何一个都可以用于特定的数据类型,那么将枚举用在这个地方最适合不过。
分享到:
评论

相关推荐

    Java ---- enum --- 枚举类案例

    Java ---- enum --- 枚举类案例

    Java枚举类型Enum的用法

    枚举在Java中不仅是一个类,还是一种特殊的类型,允许我们定义自己的常量集合。接下来,我们将深入探讨Java枚举类型的使用方法及其相关知识点。 1. **枚举的声明与初始化** 枚举类型的声明方式类似于类,但以`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 SE程序 Enum枚举类...

    全面掌握java枚举类型(enum-type)1

    Java 中使用关键字 enum 来定义一个枚举类型。例如: ```java public enum Season { SPRING, SUMMER, AUTUMN, WINTER; } ``` 特点 Java 定义枚举类型的语句很简约。它有以下特点: 1. 使用关键字 enum 2. 类型...

    java enum 枚举 学习资料

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

    高阶Java-Java枚举类型 enum 应用详解

    在Java编程语言中,枚举(enum)是一种特殊的类,用于定义一组固定的常量。它在许多场景下比使用常量或int类型的硬编码值更安全、更具可读性。本篇文章将深入探讨Java枚举的特性、用法以及如何在实际开发中充分利用...

    Python库 | aenum-2.0.1-py2-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:aenum-2.0.1-py2-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    java中enum枚举的详细用法

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

    Java中的Enum枚举用法.doc

    ### Java中的Enum枚举用法详解 #### 一、引言 在Java编程语言中,枚举(Enum)是一种特殊的数据类型,它被用来表示一组固定的常量集合。相比于使用常量接口或字符串来表示固定集合,枚举提供了更加安全且易于管理的...

    java枚举类型enum的使用

    在 Java 中,枚举(enum)是一种特殊的类,它被用来表示一组固定的常量值。枚举类型自 JDK 1.5 开始引入,为开发者提供了一种更加安全、简洁的方式来处理一组固定的数据集合。枚举中的每个元素都是该枚举类型的对象...

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

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

    JAVA高级编程中Enum枚举

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

    PyPI 官网下载 | cpp-enum-class-string-idl-0.0.1.tar.gz

    标题中的"PyPI 官网下载 | cpp-enum-class-string-idl-0.0.1.tar.gz"表明这是一个从Python Package Index(PyPI)官方源下载的软件包,名为"cpp-enum-class-string-idl",版本号为0.0.1。PyPI是Python社区用来分发和...

    Java中的枚举类型Enum示例源代码

    Java中的枚举类型`Enum`是面向对象编程中一种强大的工具,它允许程序员定义自己的常量集合。在Java中,枚举类型不是简单的常量数组,而是一种完整的类,具有类的所有特性,如方法、构造函数和继承。下面将详细探讨`...

    PyPI 官网下载 | aenum-2.0.10-py3-none-any.whl

    《PyPI上的Python库——aenum-2.0.10-py3-none-any.whl详解》 在Python编程世界中,PyPI(Python Package Index)是开发者们获取和分享软件包的重要平台。今天我们将深入探讨PyPI上的一款名为"aenum"的Python库,其...

    Java中的Enum的使用与分析

    ### Java中的Enum深入解析 #### 引言 在Java编程语言中,`Enum`是一种特殊的数据类型,用于处理一组固定的常量。它不仅提供了一种更安全、更灵活的方式来表示一组固定的选择,还包含了丰富的内置功能,使得枚举...

    enum4linux-ng:enum4linux的下一代版本(WindowsSamba枚举工具),具有JSONYAML导出等附加功能。 针对安全专业人员和CTF玩家

    enum4linux-ng enum4linux的下一代版本 enum4linux-ng.py是Mark Lowe(以前的Portcullis Labs,现为Cisco CX Security Labs)enum4linux.pl的改写,enum4linux.pl是用于枚举Windows和Samba系统中信息的工具,面向...

    java枚举实例代码

    枚举在Java中被引入,目的是为了更好地管理和使用常量,提高代码的可读性和安全性。在本实例代码中,我们将探讨枚举的基本用法和特性。 首先,枚举的定义方式如下: ```java public enum Color { RED, GREEN, ...

    PyPI 官网下载 | aenum-2.0.6-py2-none-any.whl

    7. **反向映射**:aenum支持反向查找,即通过枚举的值找到其对应的枚举成员,这在某些场景下非常实用。 8. **兼容性**:尽管"aenum"主要针对Python 2和3,但它也尽可能地与Python的内置enum模块保持兼容,这意味着...

    java 枚举(enum) 详解(学习资料)

    Java 枚举(enum)是 Java 语言中的一个重要特性,自 Java 5 开始引入。枚举用于定义一组相关的常量,这些常量通常代表一个有限的、预定义的值集合。枚举类是一种特殊的类,它具有以下特点: 1. **枚举类的声明**:...

Global site tag (gtag.js) - Google Analytics