java previous_java – 在枚举类型上实现`next`和`previous`的最好方法是什么?
假设我有一个枚举:
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`的最好方法是什么?相关推荐
- Java基础笔记 – 枚举类型的使用介绍和静态导入
Java基础笔记 – 枚举类型的使用介绍和静态导入 本文由 arthinking 发表于404 天前 ⁄ Java基础 ⁄ 暂无评论 ⁄ 被围观 1,433 views+ 1.枚举(Enum): JD ...
- java分号_java枚举类型中分号的用法
在java中写枚举类型的对象时,发生一个十分诡异的情况 public enum SeckillStatEnum { ;在没有写内容的时候,这个分号可有可无.但是如果里面写有方法,这个分号就必须带上. ...
- Java中的枚举类型与枚举实现接口的两种方式
枚举的构造 若某事物的取值只有有限个,可以一个个罗列出来,则这个列举出来的类型就叫做枚举类型. (1)使用public static 修饰的方法构造枚举 public class Size {priv ...
- java基础(十一) 枚举类型
枚举类型Enum的简介 1.什么是枚举类型 枚举类型: 就是由一组具有名的值的有限集合组成新的类型.(即新的类). 好像还是不懂,别急,咱们先来看一下 为什么要引入枚举类型 在没有引入枚举类型前,当我 ...
- 在java中关于枚举类型的特性_java枚举类型小结
JDK5.0之前,我们一般选择使用 interface 来保存常量组,以此来弥补 JDK 中没有枚举类型的缺陷,从JDK5.0开始,Sun引进了一个全新的关键字 enum 来定义一个枚举类.同inte ...
- java枚举对象作用_浅析Java编程中枚举类型的定义与使用
定义枚举类型时本质上就是在定义一个类,只不过很多细节由编译器帮您补齐了,所以某些程度上,enum关键字的 作用就像是class或interface. 当您使用"enum"定义枚举类 ...
- java 7种枚举类型_Java中的枚举类型
枚举类比较用 == 还是 equals,有啥区别? java 枚举值比较用 == 和 equals 方法没啥区别,两个随便用都是一样的效果.因为枚举 Enum 类的 equals 方法默认实现就是通过 ...
- Java工作笔记-枚举类型反射
这里枚举类型有自己的反射方式: 这里我先总结下逻辑: 1. 通过getEnumConstatnts返回目前枚举中存在的对象. 2. 通过getMehod获取方法. 3. 最后用这个对象调用其方法. 程 ...
- Java中的枚举类型学习
一:枚举的引入 enum全称enumeration,是JDK1.5中引入的新特性,存放在java.lang包中.下面就平时的学习和使用过程中用到的进行总结: 枚举(enum),是指一个经过排序的,被打 ...
最新文章
- 中国电子学会青少年编程能力等级测试图形化一级编程题:无奈的Jaime
- java无参试题_JavaEE基础面试题0
- mac命令行ftp操作
- 开关电源环路的零极点可以在反馈端补偿吗_【干货分享】开关电源环路补偿设计步骤讲解...
- maven私有库配置
- JavaScript escape() 函数
- wos 文献被引_CiteSpace与Histcite在文献引用上的区别
- 微信小程序API之showModal(Loding...)
- 5.Http Server
- 介绍几款串口监控工具
- pcie扰码的作用_扰码讲解
- 《汉魏风云》1、速度与激情——无双吕布的悲喜人生
- 录制课程视频用什么软件?微课录屏软件等你来选!
- 和小白一起学习V4L2采集视频
- 张家界3天旅游攻略(带你的想象给我游玩一遍)
- html网页设计优秀作品和代码,从优秀的网页设计作品中学排版和配色
- 笔记本电脑开机没画面/黑屏没反应怎么办?
- 卖虾滑的鲜美来IPO:水产品预制菜第一股,蹭热度or真有料?
- 串口线插入window10,设备管理器无端口选项
- 可以发布任务悬赏的app
热门文章
- 挖掘城市ip_抖in杭州嘉年华,原来城市营销还能这么玩!
- 如何安装mysql5.7.2_CentOS 7.2 安装MySQL 5.7
- Tomcat端口号的修改
- mysql frm 英文全称_FRM考试是中文还是英文?
- deepin安装java_Deepin安装Eclipse
- python语言中包含的标准数据类型_python标准数据类型(笔记一)
- 图解leetcode初级算法python版 pdf_图解LeetCode初级算法(Python版)
- Python实现单例
- 【业务篇】史上最全经验版用例之IOS和Android版APP版本更新、IOS版规避审核?
- yum 安装mysql数据库