【发布时间】:2013-06-24 16:29:28
【问题描述】:
我的枚举如下:
private static enum CD1 { CC, COR, PO };
private static enum CD2 { OMA, PBO, VAR };
private static enum CD3 { USD, EUR, GBP };
private static enum CD4 { IR, CD, COT };
当我说 CD1.CC 时,我要的是 CC,而不是 0;
我不想在每个枚举中都放置一个构造函数并覆盖 toString 以返回值;
private static enum CD1 {
CC("CC"), COR("COR"), PO("PO") ;
private String val;
CD1(String val); this.val = val;
public String toString() {
return val;
}
有没有办法泛化这个,这样我就不用为每个枚举写一个构造函数了?
编辑:
有没有办法避免使用 enumVal.name() ?我打算只使用 enum.enumVal。但是,想知道这是否可能。抱歉,问题没有说清楚。
【问题讨论】:
-
我看不出两者有什么区别。枚举的短版本应该产生与长版本相同的东西。你看到的区别是什么?仅供参考,从
toString()返回name()或仅使用name()会产生相同的结果。 -
对于你想要的,你不应该重写
toString()方法。文档说 - 返回此枚举常量的名称.... -
@BheshGurung 是的,我不必重写 toString()。这是我的疏忽,也许是一个糟糕的问题。谢谢你的回答。
-
你能解释一下“我打算只使用 enum.enumVal”是什么意思吗?