[問題] 要如何使用 enum 代替陣列的下標

看板java作者 (Mordred)時間11年前 (2013/12/06 01:31), 編輯推噓2(2012)
留言14則, 6人參與, 最新討論串1/4 (看更多)
大家好,我是 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)

12/06 04:32, , 1F
可讀性看寫法而定 http://goo.gl/KjyhxE
12/06 04:32, 1F

12/06 06:15, , 2F
每個button各自有變數名不行嗎?
12/06 06:15, 2F

12/06 10:42, , 3F
樓上,可以。
12/06 10:42, 3F

12/06 10:46, , 4F
我也沒有寫 Android 經驗,這樣寫不好嗎?
12/06 10:46, 4F

12/06 11:26, , 5F
扯到可讀性,基本上就跟平台沒關係了 Zzzz
12/06 11:26, 5F

12/06 12:10, , 6F
12/06 12:10, 6F

12/06 12:38, , 7F
原PO 那是大型Project 所以有自己整個的習慣
12/06 12:38, 7F

12/06 12:40, , 8F
至於獨立變數怎看都和你需求啊...
12/06 12:40, 8F

12/06 12:41, , 9F
除非需要foreach所有button 不然用Array本身可讀性...
12/06 12:41, 9F

12/06 13:16, , 10F
謝謝樓上,那我就不用 Array 了
12/06 13:16, 10F

12/06 13:35, , 11F
贊成 danny8376, 但若需要 foreach 我會用 HashMap 搭 Enum
12/06 13:35, 11F

12/06 14:16, , 12F
這樣來看似乎比 C++ 的 enum 還麻煩阿...
12/06 14:16, 12F

12/10 14:01, , 13F
12/10 14:01, 13F

12/14 00:50, , 14F
樓上,這種東西我當然找過。
12/14 00:50, 14F
文章代碼(AID): #1IeBY6ZZ (java)
文章代碼(AID): #1IeBY6ZZ (java)