[問題] 關於使用enum定義常數的問題

看板java作者 (蔥頭)時間10年前 (2015/05/16 23:17), 10年前編輯推噓2(2014)
留言16則, 5人參與, 最新討論串1/1
請問一下各位 ~ 最近在學定義常數, 一般傳統的就是直接用 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

05/16 23:30, , 1F
沒有,而且只當常數用說真的public static final比較好
05/16 23:30, 1F

05/16 23:32, , 2F
你這寫法跟一個普通類別裡面放兩個
05/16 23:32, 2F

05/16 23:33, , 3F
public static final EnumClass TURN_LEFT = new EnumClass
05/16 23:33, 3F

05/16 23:33, , 4F
public static final EnumClass MAX_PID_LIMIT = ...
05/16 23:33, 4F

05/16 23:34, , 5F
根本一樣,沒要用到EnumClass這個類別,也不是當singleton
05/16 23:34, 5F

05/16 23:34, , 6F
用的話實在沒必要enum
05/16 23:34, 6F

05/17 01:20, , 7F
enum 的用途在給常數語意, 跟實際的計算是無關的
05/17 01:20, 7F

05/17 16:16, , 8F
enum是一串需要定義的const,卻不一定需要知道他是多
05/17 16:16, 8F

05/17 16:17, , 9F
少,目地是為了取代if x==1 x==2 x==3 之類的狀況
05/17 16:17, 9F

05/17 16:17, , 10F
在作各種狀態判別switch的時候賦予數字可能會造成手
05/17 16:17, 10F

05/17 16:18, , 11F
誤或者日後調整時的困擾,所以才要用一串名稱代替常
05/17 16:18, 11F

05/17 16:18, , 12F
數,那個常數是什麼不重要,反正只要名稱對了都會指
05/17 16:18, 12F

05/17 16:18, , 13F
向同一個常數就好
05/17 16:18, 13F

05/17 16:20, , 14F
這在狀態控管跟協定判別的時候常用到
05/17 16:20, 14F

05/18 01:05, , 15F
TURN_LEFT.MAX_PID_LIMIT = 9999
05/18 01:05, 15F

05/18 10:34, , 16F
過去就是因為有值所以才難搞~因為0 1 2 代表甚麼?
05/18 10:34, 16F
文章代碼(AID): #1LLr-W98 (java)
文章代碼(AID): #1LLr-W98 (java)