回答
這聽起來像你的問題背後的假設是錯誤的。您可以打開enum
值,整數類型(char
,int
,byte
等)或String
實例。
在內部,所有開關都編譯爲兩條指令之一,即lookupswitch
或tableswitch
。兩條指令都要求每個案例都標有一個不同的整數。當您使用enum
值時,將使用該值的「序數」。當使用String
實例時,編譯器插入附加代碼以將每個字符串映射爲唯一值。其他類型直接使用。您可以閱讀關於此的更多信息in another answer.
enum
上的方法與任何其他對象上的方法具有相同的用途。你可以使用它們來實現多態行爲,或者作爲簡單的訪問器,或者其他任何東西。
僅在Java 7或更高版本中使用字符串實例! – 2012-01-05 17:42:53
而'enum'值僅在Java 5或更高版本中! – erickson 2012-01-05 18:03:54
好,所以沒有字符串切換,這可能是我所指的(在前7)。 – codecompleting 2012-01-05 21:39:30
第二個問題:因爲有時候枚舉需要方法,比如獲取屬性,計算等。枚舉方法非常方便,可以播放一些有趣的遊戲。
即使是tutorial's example也不是過分的設計,使用枚舉屬性和方法取得良好效果。
關於「爲什麼要將方法添加到枚舉?」
在c#中,enum是一個帶有一些語法糖的受限整數,在java中,enum是一個實際的類。真的有不同。您可以將方法添加到枚舉中,這與將其添加到任何其他類中的原因相同,以使其可以做到!作爲一個例子,每次你使用開關烤箱時,你都可以在枚舉上完全使用方法而不是開關,並且更加面向對象。如果你需要在同一個枚舉切換在不止一個地方,你可能會使用的方法
而不是做
switch(planet){
case Mars: doWhatMarsDo();break;
case Earth: doWhatEarthDo();break;
}
的更好,你可以寫
planet.doYourThing();
- 1. Java枚舉如何從1開始?
- 2. Java中的枚舉開關
- 3. 枚舉的枚舉[JAVA]
- 4. Java類枚舉枚舉類
- 5. Java枚舉找到枚舉
- 6. 如何迭代Java枚舉?
- 7. 如何使用枚舉? java
- 8. 如何從枚舉在Java
- 9. 開啓枚舉時Maven編譯失敗
- 10. 用Spring Data REST公開枚舉枚舉
- 11. 在枚舉java
- 12. 「 - 」枚舉的Java
- 13. Java枚舉
- 14. Java枚舉值
- 15. 爲什麼Java不允許開啓靜態枚舉?
- 16. 如何比較XML枚舉和Java枚舉?
- 17. Java:從枚舉枚舉<String>
- 18. Java自定義枚舉值枚舉
- 19. 是枚舉Java中的枚舉
- 20. Java在枚舉中的枚舉
- 21. Java:舊枚舉子集的新枚舉
- 22. 解析IDL枚舉到Java枚舉
- 23. Java的枚舉和PostgreSQL枚舉
- 24. 如何啓用枚舉繼承
- 25. java中的枚舉類型,開關盒
- 26. 如何在保持枚舉枚舉
- 27. #define枚舉或如何擴展枚舉
- 28. 如何枚舉嵌套枚舉器
- 29. 如何枚舉Objective-C中的枚舉?
- 30. C#如何使用枚舉與開關
「您只能打開一個字符' - 或一個整數?或者一個字符串? – BeRecursive 2012-01-05 17:42:23
咦? C#和Java中的switch語句非常相似 – Matthias 2012-01-05 17:42:32