[问题] 关于使用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