在Enum中value()方法如何工作?

values()方法背后的逻辑是什么?

在我的项目中,我们将所有枚举数据缓存在Map中,如下所示:

public enum Actions {

CREATE("create"),

UPDATE("update"),

DELETE("delete"),

ACTIVE("active"),

INACTIVE("inactive"),

MANAGE_ORDER("manage"),

;

private static Map actionMap;

static {

actionMap = new HashMap(values().length);

for(Actions action : values()) {

actionMap.put(action.getName(), action);

}

}

public static Actions fromName(String name) {

if(name == null)

throw new IllegalArgumentException();

return actionMap.get(name);

}

private String name;

private Actions(String name) {

this.name = name;

}

public String getName() {

return name;

}

}

这是使用枚举的最佳做法吗?

解决方法:

In Enum how values() method work ?

The enum declaration defines a class (called an enum type). The enum class body can include methods and other fields. The compiler automatically adds some special methods when it creates an enum. For example, they have a static values method that returns an array containing all of the values of the enum in the order they are declared. This method is commonly used in combination with the for-each construct to iterate over the values of an enum type.

另外需要注意的是,如果你使用枚举作为键,最好使用EnumMap.

A specialized Map implementation for use with enum type keys. All of the keys in an enum map must come from a single enum type that is specified, explicitly or implicitly, when the map is created. Enum maps are represented internally as arrays. This representation is extremely compact and efficient.

标签:java

来源: https://codeday.me/bug/20190723/1509014.html

java在枚举方法中调方法_java – 值方法如何在枚举中工作相关推荐

  1. java工厂方法模式记录日志_java工厂方法模式

    一:工厂方法模式 1.概念 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式. 工厂方法模式的用意 ...

  2. java 方法名相同_Java的方法的重载 :方法名相同,参数类型不同 - Break易站

    人类设计语言时,相同的词汇可以表达多种意思.而在Java里面,方法也被设计成这个模式,而区分这些相同方法名的就是方法的参数. Java的方法的重载的特点 方法的重载有下面的特点: 1. 方法名相同,参 ...

  3. java map取第一个元素_Java Set接口 Map 与枚举

    Set接口 概述 一个不包含重复元素的 collection.更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素 特点 Set接口是 ...

  4. Java05-day05【方法(概述、调用过程图解)、带参方法、带返回值方法、重载、方法参数传递(基本类型、引用类型)】

    java零基础入门到精通(2019版)[黑马程序员] 视频+资料:[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] &qu ...

  5. java方法的传递方式_JAVA基础--方法传参

    JAVA基础--方法传参 为啥拿这个当话题? 在初学者阶段,许多童鞋都对方法传参比较迷茫,知其然不知其所以然. 一.先说说参数传递的几个术语: 值调用(call by vale):表示方法接收的是调用 ...

  6. java 线程只执行一次_java – 如何确保方法只执行一次并且只从一个线程执行?...

    @ ShayHaned的解决方案使用锁定.您可以通过AtomicBoolean使其更高效,如: AtomicBoolean wasRun = new AtomicBoolean(false); Cou ...

  7. java8 方法引用好处_Java 8方法引用

    原标题:Java 8方法引用 方法引用有助于通过名称指向方法.使用"::"符号描述方法引用.方法引用可以用来指出以下类型的方法 - 静态方法 实例方法 使用new运算符的构造函数( ...

  8. Java枚举意义在哪_java – 多个if-else或枚举 – 哪一个更好,为什么?

    这是原始代码: public class FruitGrower { public void growAFruit(String type) { if ("wtrmln".equa ...

  9. java怎么给表格设置行间距_java – iText列表项或JTextArea中的行间距

    要覆盖JTextArea的行间距,请查看PlainView(用于呈现PLainDocument). public void paint(Graphics g,Shape a)方法中有以下几行 draw ...

最新文章

  1. js ajax 递归,javascript ajax循环请求/ 长轮询终极解决办法——递归
  2. 怎么讲iso镜像文件使用ultroISO写入到空白的光盘中?
  3. 7.Nginx_Keepalived高可用配置
  4. Linux上传与下载工具介绍
  5. 初中 计算机文化知识,计算机文化知识(Computer literacy).doc
  6. mysql密码正确却提示错误,不使用密码反而能登录
  7. E9启动后无法打印日志
  8. 近期团队博客的摘要 5
  9. 从源程序到可执行文件的四个过程
  10. Java实验报告(七)|IO编程
  11. 研究生毕业设计的课题的基本步骤以及每个步骤的关键点?
  12. SPI 接口驱动电路设计
  13. 计算机考研专业课只考一科的学校汇总
  14. NNDL实验实验六 卷积神经网络(4)ResNet18实现MNIST
  15. install sql server 2016 Error code 0x84B20001
  16. HBulider 制作 手机APP
  17. 安徽身份证网上办理最全攻略
  18. 20230429作业
  19. java计算机毕业设计幼儿园综合管理系统源码+数据库+系统+lw文档+部署
  20. 怎么在Excel中凑数

热门文章

  1. Live Source Address 2019最新的电视广播包_澧县召开非法卫星电视广播地面接收设施专项整治工作会议...
  2. 作者:吴甘沙,英特尔中国研究院院长。
  3. 【算法分析与设计】实验 动态规划算法解决找零钱问题
  4. 【Python】Matplotlib绘制正余弦曲面图
  5. 【Java】《Java编程的逻辑》第4章 类的继承 笔记+感悟分享
  6. 遗传算法 差分进化算法 粒子群优化算法区别
  7. 图像学之底层算法基石其一
  8. 聊聊zxing的qrcode
  9. JavaScript数据类型 typeof, null, 和 undefined
  10. Exchange2010应用地址列表