如何获取与键同名的枚举值?

时间:2013-06-24 16:29:29

标签: java generics enums

我的枚举如下:

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。但是,想知道这是否可能。对不起,问题不明确。

3 个答案:

答案 0 :(得分:2)

使用

enumVal.name()

这内置于Java枚举

答案 1 :(得分:0)

您可以直接使用Enum.name()方法或println()方法。

System.out.println(CD1.COR); // prints: COR

如果您不想明确致电name();只需覆盖toString()
只是深入挖掘源代码;结果证明这是默认行为(由@Puce指出)

public final String name() {
    return name;
}

public String toString() {
    return name;
}

区别在于name()无法覆盖。

答案 2 :(得分:0)

正如其他人所说,你可以使用name()方法获得你决定用于枚举常量的标签。

name()旨在返回标签。此方法适用于依赖此表示的程序和应用程序。

toString()旨在被程序员覆盖或使用,以创建更“适合最终用户”的信息显示。

听起来我想要使用name()函数。