Java:可以让printf显示枚举的名字吗?

Joh*_*ite 0 java enums printf

我注意到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);
}
Run Code Online (Sandbox Code Playgroud)

Rei*_*eus 6

%d格式说明符与enum类型不兼容,除非对ordinal值使用.要调用enum's toString方法(使用该name字段),您可以%s改为使用

System.out.printf("%s, %s%n", fred, xx);
Run Code Online (Sandbox Code Playgroud)

阅读:枚举