Java:如何让printf显示枚举的名称?

3
我注意到println()可以实现这一点,但我无法在printf()中实现。在以下代码片段中,前两个println输出RED和BLUE,然后printf崩溃了。
class Jim {
public enum Colours  {BLUE, RED}
static Colours xx = Colours.RED;
public static void main(String[] args)  {
    Colours fred = Colours.BLUE;
    System.out.println(xx);
    System.out.println(fred);
    System.out.printf("%d, %d\n", fred, xx);
}
1个回答

11

%d格式说明符与enum类型不兼容,除非针对ordinal值使用。要调用enumtoString方法(使用name字段),您可以使用%s代替。

System.out.printf("%s, %s%n", fred, xx);

阅读:枚举类型


没问题,谢谢。但你觉得将来会有一个%m或其他东西专门表示枚举吗?还是这个问题很愚蠢?(我对Java不太了解)。 - undefined
不觉得有必要使用这样的限定符,%s限定符已经可以显示枚举值了 :) - undefined
好的,Reimeus,绝对正确。但是如果你意思是枚举,那么说“enum”会更好,不是吗? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接