假设我有一个枚举:

enum E {

A, B, C;

}

如lucasmo by lucasmo所示,枚举值按照它们被初始化的顺序存储在静态数组中,您可以稍后用E.values()检索(克隆)此数组。

现在假设我想实现E#getNext和E#getPrevious,以使所有下列表达式求值为true:

E.A.getNext() == E.B

E.B.getNext() == E.C

E.C.getNext() == E.A

E.A.getPrevious() == E.C

E.B.getPrevious() == E.A

E.C.getPrevious() == E.B

我目前的实现getNext如下:

public E getNext() {

E[] e = E.values();

int i = 0;

for (; e[i] != this; i++)

;

i++;

i %= e.length;

return e[i];

}

和类似的getPrevious方法。

然而,这个代码看起来很麻烦(例如,“空”for循环,可计数滥用计数器变量,并且在最坏的情况下可能是错误的(思考反思,可能)。

在Java 7中为枚举类型实现getNext和getPrevious方法的最佳方法是什么?

注意:我不打算这个问题是主观的。我对“最好”实现的请求是要求最快,最干净,最可维护的实现的简写。

java previous_java – 在枚举类型上实现`next`和`previous`的最好方法是什么?相关推荐

  1. Java基础笔记 – 枚举类型的使用介绍和静态导入

    Java基础笔记 – 枚举类型的使用介绍和静态导入 本文由 arthinking 发表于404 天前 ⁄ Java基础 ⁄ 暂无评论 ⁄ 被围观 1,433 views+ 1.枚举(Enum): JD ...

  2. java分号_java枚举类型中分号的用法

    在java中写枚举类型的对象时,发生一个十分诡异的情况 public enum SeckillStatEnum { ;在没有写内容的时候,这个分号可有可无.但是如果里面写有方法,这个分号就必须带上. ...

  3. Java中的枚举类型与枚举实现接口的两种方式

    枚举的构造 若某事物的取值只有有限个,可以一个个罗列出来,则这个列举出来的类型就叫做枚举类型. (1)使用public static 修饰的方法构造枚举 public class Size {priv ...

  4. java基础(十一) 枚举类型

    枚举类型Enum的简介 1.什么是枚举类型 枚举类型: 就是由一组具有名的值的有限集合组成新的类型.(即新的类). 好像还是不懂,别急,咱们先来看一下 为什么要引入枚举类型 在没有引入枚举类型前,当我 ...

  5. 在java中关于枚举类型的特性_java枚举类型小结

    JDK5.0之前,我们一般选择使用 interface 来保存常量组,以此来弥补 JDK 中没有枚举类型的缺陷,从JDK5.0开始,Sun引进了一个全新的关键字 enum 来定义一个枚举类.同inte ...

  6. java枚举对象作用_浅析Java编程中枚举类型的定义与使用

    定义枚举类型时本质上就是在定义一个类,只不过很多细节由编译器帮您补齐了,所以某些程度上,enum关键字的 作用就像是class或interface. 当您使用"enum"定义枚举类 ...

  7. java 7种枚举类型_Java中的枚举类型

    枚举类比较用 == 还是 equals,有啥区别? java 枚举值比较用 == 和 equals 方法没啥区别,两个随便用都是一样的效果.因为枚举 Enum 类的 equals 方法默认实现就是通过 ...

  8. Java工作笔记-枚举类型反射

    这里枚举类型有自己的反射方式: 这里我先总结下逻辑: 1. 通过getEnumConstatnts返回目前枚举中存在的对象. 2. 通过getMehod获取方法. 3. 最后用这个对象调用其方法. 程 ...

  9. Java中的枚举类型学习

    一:枚举的引入 enum全称enumeration,是JDK1.5中引入的新特性,存放在java.lang包中.下面就平时的学习和使用过程中用到的进行总结: 枚举(enum),是指一个经过排序的,被打 ...

最新文章

  1. 中国电子学会青少年编程能力等级测试图形化一级编程题:无奈的Jaime
  2. java无参试题_JavaEE基础面试题0
  3. mac命令行ftp操作
  4. 开关电源环路的零极点可以在反馈端补偿吗_【干货分享】开关电源环路补偿设计步骤讲解...
  5. maven私有库配置
  6. JavaScript escape() 函数
  7. wos 文献被引_CiteSpace与Histcite在文献引用上的区别
  8. 微信小程序API之showModal(Loding...)
  9. 5.Http Server
  10. 介绍几款串口监控工具
  11. pcie扰码的作用_扰码讲解
  12. 《汉魏风云》1、速度与激情——无双吕布的悲喜人生
  13. 录制课程视频用什么软件?微课录屏软件等你来选!
  14. 和小白一起学习V4L2采集视频
  15. 张家界3天旅游攻略(带你的想象给我游玩一遍)
  16. html网页设计优秀作品和代码,从优秀的网页设计作品中学排版和配色
  17. 笔记本电脑开机没画面/黑屏没反应怎么办?
  18. 卖虾滑的鲜美来IPO:水产品预制菜第一股,蹭热度or真有料?
  19. 串口线插入window10,设备管理器无端口选项
  20. 可以发布任务悬赏的app

热门文章

  1. 挖掘城市ip_抖in杭州嘉年华,原来城市营销还能这么玩!
  2. 如何安装mysql5.7.2_CentOS 7.2 安装MySQL 5.7
  3. Tomcat端口号的修改
  4. mysql frm 英文全称_FRM考试是中文还是英文?
  5. deepin安装java_Deepin安装Eclipse
  6. python语言中包含的标准数据类型_python标准数据类型(笔记一)
  7. 图解leetcode初级算法python版 pdf_图解LeetCode初级算法(Python版)
  8. Python实现单例
  9. 【业务篇】史上最全经验版用例之IOS和Android版APP版本更新、IOS版规避审核?
  10. yum 安装mysql数据库