作者tas72732002 (蔥頭)
看板java
標題[問題] 關於使用enum定義常數的問題
時間Sat May 16 23:17:49 2015
請問一下各位 ~ 最近在學定義常數, 一般傳統的就是直接用
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://webptt.com/m.aspx?n=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
1F:→ ssccg: 沒有,而且只當常數用說真的public static final比較好 05/16 23:30
2F:→ ssccg: 你這寫法跟一個普通類別裡面放兩個 05/16 23:32
3F:→ ssccg: public static final EnumClass TURN_LEFT = new EnumClass 05/16 23:33
4F:→ ssccg: public static final EnumClass MAX_PID_LIMIT = ... 05/16 23:33
5F:→ ssccg: 根本一樣,沒要用到EnumClass這個類別,也不是當singleton 05/16 23:34
6F:→ ssccg: 用的話實在沒必要enum 05/16 23:34
7F:推 LPH66: enum 的用途在給常數語意, 跟實際的計算是無關的 05/17 01:20
8F:→ KawasumiMai: enum是一串需要定義的const,卻不一定需要知道他是多 05/17 16:16
9F:→ KawasumiMai: 少,目地是為了取代if x==1 x==2 x==3 之類的狀況 05/17 16:17
10F:→ KawasumiMai: 在作各種狀態判別switch的時候賦予數字可能會造成手 05/17 16:17
11F:→ KawasumiMai: 誤或者日後調整時的困擾,所以才要用一串名稱代替常 05/17 16:18
12F:→ KawasumiMai: 數,那個常數是什麼不重要,反正只要名稱對了都會指 05/17 16:18
13F:→ KawasumiMai: 向同一個常數就好 05/17 16:18
14F:→ KawasumiMai: 這在狀態控管跟協定判別的時候常用到 05/17 16:20
15F:推 yyc1217: TURN_LEFT.MAX_PID_LIMIT = 9999 05/18 01:05
16F:→ swpoker: 過去就是因為有值所以才難搞~因為0 1 2 代表甚麼? 05/18 10:34