是否可以使用包含两个或更多单词的枚举的枚举类?

时间:2012-03-15 01:57:21

标签: java enums word

我必须选择几种类型的书籍类型,我正在考虑使用枚举,但有几种类型由两个或更多的单词组成,如“医疗,健康与健身”,“艺术与摄影” ,“科幻小说”等。

public enum Genero {
    Action, Comedy, Drama, Computers, Novel, Science Fiction
}

但是我在“科幻小说”中遇到了语法错误。我尝试用双引号和简单的quoutes,但没有奏效。此枚举将用作Book类的属性。

3 个答案:

答案 0 :(得分:16)

不,这是不可能的。枚举名称必须是有效的Java标识符 - 这意味着没有空格。通常的惯例是在所有大写字符中声明枚举名称,并使用下划线分隔单词,如下所示:

public enum Genero {
    ACTION, COMEDY, DRAMA, COMPUTERS, NOVEL, SCIENCE_FICTION
}

答案 1 :(得分:5)

这是不可能的。但是,可以在名称中使用下划线(Science_Fiction)。您还可以覆盖toString方法以返回您想要的任何内容(因为它似乎是您的枚举的人类可读名称):

public enum Genero {
    ACTION("Action"), COMEDY("Comedy"), DRAMA("Drama"), COMPUTERS("Computers"), NOVEL("Novel"), SCIENCE_FICTION("Science Fiction");

    private final String toString;

    private Genero(String toString) {
         this.toString = toString;
    }

    public String toString(){
         return toString;
    }
}

答案 2 :(得分:0)

这可能是你想要的:

static private enum EnumExample { 
  R("Sample emun with spaces"),  
  G("Science Fiction");  
  final private String value; 
  EnumExample(String s) { 
    value = s; 
  } 
} 

System.out.println(EnumExample.G.value); 
System.out.println(EnumExample.valueOf("G").value); 

Science Fiction 
Science Fiction