Java 是否可以使用两个或多个单词的枚举来创建枚举类?

Java 是否可以使用两个或多个单词的枚举来创建枚举类?,java,enums,word,Java,Enums,Word,我必须从几种类型的书籍中进行选择,我正在考虑使用Enum,但是有几种类型的书籍是由两个或两个以上的单词组成的,如“医疗、健康与健身”、“艺术与摄影”、“科幻小说”等 但是我在“科幻小说”中犯了一个语法错误。我试着用双引号和简单的QUOTE来表达,但都不起作用。此枚举将用作Book类的属性 不,这是不可能的。枚举名称必须是有效的Java标识符-这意味着没有空格。通常的惯例是使用所有大写字符和下划线分隔的单词声明枚举名称,如下所示: public enum Genero { ACTION,

我必须从几种类型的书籍中进行选择,我正在考虑使用Enum,但是有几种类型的书籍是由两个或两个以上的单词组成的,如“医疗、健康与健身”、“艺术与摄影”、“科幻小说”等


但是我在“科幻小说”中犯了一个语法错误。我试着用双引号和简单的QUOTE来表达,但都不起作用。此枚举将用作Book类的属性

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

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

这是不可能的。但是,可以在名称中使用下划线(
科幻小说
)。您还可以重写
toString
方法,以返回您想要返回的任何内容(因为它似乎是为您的枚举指定一个人类可读的名称):


这可能是您想要的:

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

@TomHawtin tackline Whoopsies,现在已修复。我只想为性别属性的Book one性别赋值。比如:
Gender=grando.ACTION
我不知道在哪里可以使用构造函数或toString方法:S@Aikanáro您不必构造自己的enum对象;它们是在类加载时生成的。如果这样做,包含对象的变量将全部是大写和下划线(因为变量名不能有空格),但如果实际的枚举对象转换为字符串,它们将有标题大小写名称和空格。这是枚举中构造函数的一个很好的示例,但因为它们是枚举,你绝对应该摆脱二传手。所有字段必须由枚举中的固定值指定。但是,您可以保留getter,以便在其他类中访问它。我会将该字段设置为
final
private
@TomHawtin-tackline您是指“final private String value”还是?是的。目前您可以编写
EnumExample.G.value=“喜剧”。我会将类nom设置为静态,字段也设置为私有(nom static),并为该字段创建一个getter(但不是setter)。由于EMUM是在内部处理的,我认为a只会使用下划线
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;
    }
}
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