回答
Java枚舉不像C或C++枚舉,它們實際上只是整數的標籤。
Java枚舉類實現更像類 - 而且它們甚至可以有多個屬性。
public enum Ids {
OPEN(100), CLOSE(200);
private final int id;
Ids(int id) { this.id = id; }
public int getValue() { return id; }
}
最大的區別是,他們是類型安全這意味着你不必擔心的大小可變分配COLOR枚舉。
查看http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html瞭解更多。
是的。您可以通過數值來構造的枚舉,像這樣:
enum Ids {
OPEN(100),
CLOSE(200);
private int value;
private Ids(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
更多信息,請參見Sun Java Language Guide。
酷。可以混合嗎?即只將數字分配給選定的枚舉值。 – 2016-10-19 08:39:20
私有修飾符對於枚舉構造函數是多餘的 – 2017-01-16 14:53:09
如果你使用非常大的枚舉類型,那麼以下是有用的;
什麼關於使用這種方式:
public enum HL_COLORS{
YELLOW,
ORANGE;
public int getColorValue() {
switch (this) {
case YELLOW:
return 0xffffff00;
case ORANGE:
return 0xffffa500;
default://YELLOW
return 0xffffff00;
}
}
}
只有一個方法..
可以使用靜態方法並傳遞枚舉作爲參數 像:
public enum HL_COLORS{
YELLOW,
ORANGE;
public static int getColorValue(HL_COLORS hl) {
switch (hl) {
case YELLOW:
return 0xffffff00;
case ORANGE:
return 0xffffa500;
default://YELLOW
return 0xffffff00;
}
}
請注意,這兩種方式使用更少的內存和更多的流程單位..我不'不要說這是最好的方法,但它只是另一種方法。
如果你想模仿C/C++(NUM基地和增量的nextS)的枚舉:
enum ids {
OPEN, CLOSE;
//
private static final int BASE_ORDINAL = 100;
public int getCode() {
return ordinal() + BASE_ORDINAL;
}
};
public class TestEnum {
public static void main (String... args){
for (ids i : new ids[] { ids.OPEN, ids.CLOSE }) {
System.out.println(i.toString() + " " +
i.ordinal() + " " +
i.getCode());
}
}
}
OPEN 0 100 CLOSE 1 101
- 1. 我可以啓用警告來比較枚舉值和非枚舉值嗎?
- 2. 設置值枚舉 - Java
- 3. 我可以在枚舉中使用枚舉嗎?
- 4. 我可以在枚舉中聲明枚舉以指定/限制Java中的映射中的鍵和值嗎?
- 5. 我可以在Java中爲枚舉指定序號嗎?
- 6. 我們可以在java中使用C++類型枚舉嗎?
- 7. 我們可以改變datomic枚舉嗎?或者我們可以添加任何新的值給datomic枚舉嗎?
- 8. 我可以使用@switch和枚舉嗎?
- 9. MySQL:我可以共享枚舉嗎?
- 10. 我可以比較MySQL枚舉嗎?
- 11. 我可以使用參數枚舉嗎?
- 12. 我可以枚舉JRuby中Java接口的實例方法嗎?
- 13. 我可以用位或對Java枚舉
- 14. 在Java中將枚舉值設置爲隨機值
- 15. 我可以在AWS CloudFormation啓動URL中設置參數嗎?
- 16. 設置空值枚舉C#
- 17. 在Rhino中,我可以枚舉可用的Java包的列表嗎?怎麼樣?
- 18. Java枚舉值
- 19. 我可以配置ServiceStack.Text以將枚舉值序列化爲camelCase嗎?
- 20. 我可以迭代多維枚舉(java)嗎?
- 21. 在Java中可以枚舉具有不等號的名稱嗎?
- 22. 我可以根據其字段的值獲取枚舉嗎?
- 23. 我可以有其他形式的枚舉值嗎?
- 24. 我怎麼能從我的枚舉在Java中設置整數,字符串值?
- 25. 在Java中爲枚舉值設置空字符串
- 26. C#:一個枚舉值可以保存爲一個設置?
- 27. 我可以在JpaRepository nativeQuery中使用枚舉參數嗎?
- 28. 我可以在Razor視圖中定義一個枚舉嗎?
- 29. Java:我可以使用常量字符串作爲枚舉鍵值嗎?
- 30. 我可以設置IDLE以默認啓動Python 2.5嗎?
根據您的聲明,使用java創建順序整數的枚舉(類似於C++枚舉)的最佳實踐,對於索引到數組或類似內容,應寫入: enum (0), AGE(1), HEIGHT(2), WEIGHT(3); } 謝謝, -bn – 2009-08-13 19:35:56