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

作者: tas72732002 (蔥頭)   2015-05-16 23:17:49
請問一下各位 ~ 最近在學定義常數, 一般傳統的就是直接用
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()做到, 不
要兩種類型還要用兩個函式, 麻煩各位, 謝謝 !
作者: ssccg (23)   2015-05-16 23:30:00
沒有,而且只當常數用說真的public static final比較好你這寫法跟一個普通類別裡面放兩個public static final EnumClass TURN_LEFT = new EnumClasspublic static final EnumClass MAX_PID_LIMIT = ...根本一樣,沒要用到EnumClass這個類別,也不是當singleton用的話實在沒必要enum
作者: LPH66 (-6.2598534e+18f)   2015-05-17 01:20:00
enum 的用途在給常數語意, 跟實際的計算是無關的
作者: KawasumiMai (さあ、死ぬがいい)   2015-05-17 16:16:00
enum是一串需要定義的const,卻不一定需要知道他是多少,目地是為了取代if x==1 x==2 x==3 之類的狀況在作各種狀態判別switch的時候賦予數字可能會造成手誤或者日後調整時的困擾,所以才要用一串名稱代替常數,那個常數是什麼不重要,反正只要名稱對了都會指向同一個常數就好這在狀態控管跟協定判別的時候常用到
作者: yyc1217 (somo)   2015-05-18 01:05:00
TURN_LEFT.MAX_PID_LIMIT = 9999
作者: swpoker (swpoker)   2015-05-18 10:34:00
過去就是因為有值所以才難搞~因為0 1 2 代表甚麼?

Links booklink

Contact Us: admin [ a t ] ucptt.com