作者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/cn.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