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`的最好方法是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机语言2进制怎么计算,计算机语言二进
- 下一篇: 重复数据_MongoDB 自动过滤重复数