我的枚举如下:
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。但是,想知道这是否可能。对不起,问题不明确。
答案 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()函数。