有时, 我们需要根据当前枚举值, 自动获取代码中声明的下个枚举值. 可以使用以下代码实现
这里举例我们的枚举类是OrderStatusEnum
// 所有枚举元素private static OrderStatusEnum[] vals = values();// 上一个元素, 如果当前元素是第一个元素, 那么返回 nullpublic OrderStatusEnum prev() {// 第一个元素没有上面的元素if (ordinal() == 0) {return null;}return vals[(this.ordinal() - 1) % vals.length];}// 下一个元素, 如果当前元素是最后一个元素, 那么返回 nullpublic OrderStatusEnum next() {// 最后一个元素没有下面的元素if (ordinal() + 1 == vals.length) {return null;}return vals[(ordinal() + 1) % vals.length];}
验证
/*** next*/@Testpublic void testNext() {OrderStatusEnum cancel = OrderStatusEnum.CANCEL;// 如果下一个是第一个, 那么表示流程结束if (cancel.next() == null) {System.out.println("没有下个元素...");}OrderStatusEnum newOrder = OrderStatusEnum.NEW;if (newOrder.prev() == null) {System.out.println("没有上个元素...");}}