回答
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. 設置值枚舉 - Java
- 2. 我可以在枚舉中聲明枚舉以指定/限制Java中的映射中的鍵和值嗎?
- 3. 我可以在Java中爲枚舉指定序號嗎?
- 4. 我可以比較MySQL枚舉嗎?
- 5. MySQL:我可以共享枚舉嗎?
- 6. 我可以使用參數枚舉嗎?
- 7. 我可以用位或對Java枚舉
- 8. 在Java中將枚舉值設置爲隨機值
- 9. 我可以在AWS CloudFormation啓動URL中設置參數嗎?
- 10. 我可以配置ServiceStack.Text以將枚舉值序列化爲camelCase嗎?
- 11. 我可以迭代多維枚舉(java)嗎?
- 12. 我怎麼能從我的枚舉在Java中設置整數,字符串值?
- 13. 我可以根據其字段的值獲取枚舉嗎?
- 14. C#:一個枚舉值可以保存爲一個設置?
- 15. Java:我可以使用常量字符串作爲枚舉鍵值嗎?
- 16. 枚舉元素可以在Java中使用多於1個值
- 17. 在iOS應用程序中設置枚舉的枚舉,以便可以在整個應用程序中訪問
- 18. Java如何開啓枚舉?
- 19. Java在枚舉中的枚舉
- 20. 我可以使用枚舉值作爲UiBinder模板中的字段值嗎?
- 21. Libtorrent設置枚舉
- 22. 我可以typdef一個枚舉是另一個typdef枚舉的擴展嗎?
- 23. 枚舉在Java中
- 24. Android枚舉:從整數值編程設置枚舉
- 25. phpmyadmin中的枚舉值可以像這樣嗎? 'Readme'=> 1
- 26. 如果使用JDO實體保存枚舉值,我可以刪除枚舉值嗎?
- 27. 一旦創建了C枚舉值,你可以添加值嗎?
- 28. 如何循環枚舉,我爲每個枚舉項目設置值?
- 29. 我可以在枚舉上使用Spring的@Component嗎?
- 30. 我們可以在函數內部定義枚舉嗎?
根據您的聲明,使用java創建順序整數的枚舉(類似於C++枚舉)的最佳實踐,對於索引到數組或類似內容,應寫入: enum (0), AGE(1), HEIGHT(2), WEIGHT(3); } 謝謝, -bn – 2009-08-13 19:35:56