作者AnyaAlstreim (Mordred)
看板java
標題[問題] 要如何使用 enum 代替陣列的下標
時間Fri Dec 6 01:31:48 2013
大家好,我是 Java 新手。
我在寫 Android 專案時遇到一種情況:
如果有五個按鈕,內容分別為以下
【 精華公佈欄 】
【 我 的 最愛 】
【 分組討論區 】
【 私人信件區 】
【 休閒聊天區 】
然後 code 這樣寫
Button[] button = new Button [5];
button[0] = ...;
button[1] = ...;
...
button[4] = ...;
這時候會有可讀性和易維護性的問題,例如想在最開頭加上一個新的按鈕
【 個人設定區 】
那後面的 button 下標就要全部往後移了。
以前寫 C++ 的經驗是,使用 enum 並且直接指定一個常數
例如
enum e_Button {
ANNOUNCE = 0,
FAVORITE,
...
};
之後就可以使用
button[ANNOUNCE]
來取代 index
但是 Java 的 enum 似乎沒這麼簡單...
如果要取值可能還要用 value 之類的 method
我想的到的方法大概要在 [] 裡 call method,補上參數就長長一條,
這樣可讀性反而又更差了..... 重構下去大概會被組員罵死吧 XD
剛好找不太到有人遇過這種問題,
想請教一下大家是如何解決的?
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.60.254.27
※ 編輯: AnyaAlstreim 來自: 61.60.254.27 (12/06 01:32)
→ danny8376:每個button各自有變數名不行嗎? 12/06 06:15
→ AnyaAlstreim:樓上,可以。 12/06 10:42
→ AnyaAlstreim:我也沒有寫 Android 經驗,這樣寫不好嗎? 12/06 10:46
推 PsMonkey:扯到可讀性,基本上就跟平台沒關係了 Zzzz 12/06 11:26
→ danny8376:原PO 那是大型Project 所以有自己整個的習慣 12/06 12:38
→ danny8376:至於獨立變數怎看都和你需求啊... 12/06 12:40
→ danny8376:除非需要foreach所有button 不然用Array本身可讀性... 12/06 12:41
→ AnyaAlstreim:謝謝樓上,那我就不用 Array 了 12/06 13:16
→ tkcn:贊成 danny8376, 但若需要 foreach 我會用 HashMap 搭 Enum 12/06 13:35
→ AnyaAlstreim:這樣來看似乎比 C++ 的 enum 還麻煩阿... 12/06 14:16
→ AnyaAlstreim:樓上,這種東西我當然找過。 12/14 00:50