通過閱讀Enum Types, The Java Tutorials:枚舉值() - 調用每個時間或分配給可變
編譯器自動當它創建 枚舉增加了一些特殊的方法。例如,它們具有一個靜態值方法,該方法返回一個 數組,該數組包含聲明爲 的枚舉的所有值。此方法通常與 結合使用,用於遍歷枚舉類型的值。
我想知道values()
方法的確切功能。它實際上是僅僅返回一個類成員/常量,還是更隱藏在引擎之下?下面的代碼是在沒有爲了演示的最佳做法,但亮點方式這個問題將如何回答影響我可能會如何處理一個問題:如果values()
返回類成員/恆定我認爲稱之爲慷慨
(見getAllValues()
),像這樣:
enum ExampleEnum {
A("A's String"), B("B's String"), C("C's String");
ExampleEnum(String someValue) {
this.someValue = someValue;
}
private final String someValue;
private String[] getAllValues() {
String[] result = new String[values().length];
for (int i = 0; i < values().length; i++) {
result[i] = values()[i].someValue;
}
return result;
}
}
但如果它是做實際工作,我會改變getAllValues()
如下:
private String[] getAllValues() {
ExampleEnum[] values = values();
String[] result = new String[values.length];
for (int i = 0; i < values.length; i++) {
result[i] = values[i].someValue;
}
return result;
}