看板 java 關於我們 聯絡資訊
請問一下各位 ~ 最近在學定義常數, 一般傳統的就是直接用 public static final int MAX_NUM_LIMIT = 1000;的方式來定義, 但最近在書上也看到用enum的方法, 我的範例如下 : public enum EnumClass { TURN_LEFT("向左轉"), MAX_PID_LIMIT(9999) private int number; private String name; private EnumClass(int number) { this.number = number; } private EnumClass(String name) { this.name = name; } // public int getResult() // { // return number; //} } 但是因為我所定義常數的值有可能是"整數"也有可能是"字串", 所以我在取得常數的值的時候, 是不是沒辦法用一個函式來取得, 例如 EnumClass.TURN_LEFT.getResult(); EnumClass.MAX_PID_LIMIT.getResult(); 可以只用一個函式來取得常數的值嗎? 我希望可以僅用getResult()做到, 不 要兩種類型還要用兩個函式, 麻煩各位, 謝謝 ! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.181.227 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1431789472.A.248.html ※ 編輯: tas72732002 (114.34.181.227), 05/16/2015 23:18:01 ※ 編輯: tas72732002 (114.34.181.227), 05/16/2015 23:18:12
ssccg: 沒有,而且只當常數用說真的public static final比較好 05/16 23:30
ssccg: 你這寫法跟一個普通類別裡面放兩個 05/16 23:32
ssccg: public static final EnumClass TURN_LEFT = new EnumClass 05/16 23:33
ssccg: public static final EnumClass MAX_PID_LIMIT = ... 05/16 23:33
ssccg: 根本一樣,沒要用到EnumClass這個類別,也不是當singleton 05/16 23:34
ssccg: 用的話實在沒必要enum 05/16 23:34
LPH66: enum 的用途在給常數語意, 跟實際的計算是無關的 05/17 01:20
KawasumiMai: enum是一串需要定義的const,卻不一定需要知道他是多 05/17 16:16
KawasumiMai: 少,目地是為了取代if x==1 x==2 x==3 之類的狀況 05/17 16:17
KawasumiMai: 在作各種狀態判別switch的時候賦予數字可能會造成手 05/17 16:17
KawasumiMai: 誤或者日後調整時的困擾,所以才要用一串名稱代替常 05/17 16:18
KawasumiMai: 數,那個常數是什麼不重要,反正只要名稱對了都會指 05/17 16:18
KawasumiMai: 向同一個常數就好 05/17 16:18
KawasumiMai: 這在狀態控管跟協定判別的時候常用到 05/17 16:20
yyc1217: TURN_LEFT.MAX_PID_LIMIT = 9999 05/18 01:05
swpoker: 過去就是因為有值所以才難搞~因為0 1 2 代表甚麼? 05/18 10:34