如何访问带有两个关键字的字符串,如;“好时光”;在Java中的switch语句中?
可能重复:如何访问带有两个关键字的字符串,如;“好时光”;在Java中的switch语句中?,java,enums,switch-statement,Java,Enums,Switch Statement,可能重复: 下面是示例代码: public enum InstrumentType{ GUITAR,BANJO,MANDOLIN,DOBRO, FIDDLE ,LAMBEG DRUM, public String toString(){ switch(this){ case GUITAR: return "Guitar"; case BANJO:
下面是示例代码:
public enum InstrumentType{
GUITAR,BANJO,MANDOLIN,DOBRO, FIDDLE ,LAMBEG DRUM,
public String toString(){
switch(this){
case GUITAR:
return "Guitar";
case BANJO:
return "Banjo";
case DOBRO:
return "Dobro";
case FIDDLE:
return "Fiddle";
case LAMBEG DRUM:
return "Lambeg drum";
default:
return "Unspecified";
}
}
}
如何在交换机中访问“Lambeg drum”等两个关键字?
我不想用兰贝格鼓或兰贝格鼓。
有什么建议吗?
提前谢谢。这是不可能的。关键字
case
后面的值是一个标识符,或计算为常量值的值(例如整数、枚举或布尔值)
Java中的标识符不能包含空格
似乎您的问题本质上是关于Java中的有效命名,而您提出的解决方案是无效的。简而言之:“您不能”。Java变量/类标识符不能包含空格。这条规则确实有一些骇人听闻的黑客,但确实没有理由这么做 首先,名称“LAMBEG-DRUM”不是有效的枚举标识符,不能在那里有空格,也不能在交换机中有空格。使用“u”分隔两个单词,这是惯例:“LAMBEG_DRUM”您可以使用字段和构造函数扩展枚举
public enum InstrumentType{
GUITAR("Guitar"),
BANJO("Banjo")
private final String name;
private InstrumentType(String name) {
this.name = name;
}
public String toString(){
return this.name;
}
}
不要在toString()方法中使用case语句。您仍然需要使用LAMBEG_DRUM或枚举名称中没有空格的东西,但是您可以向构造函数添加描述,并在toString()中使用它
枚举标识符必须遵循与Java中变量相同的命名规则,因此您不能首先使用空格。因为您甚至不能声明
LAMBEG-DRUM
(标识符不能有空格),所以我看不到用例…好的,但如何实现这一点?意思是说还有其他方法吗?天哪…只要遵守Java的语法规则。使用下划线。空格不起作用(至少在没有一些反射或动态类巫毒的情况下是不起作用的,即使这样,你也不能以你想要的方式使用它)。我正在使用enum为单关键字字符串实现这一点,有没有更好的方法?@WAnant u说你不能使用“u”或LAMBEGDRUM,那么LAMBEG1DRU呢……如果不起作用,试试LAMBEG2DRUM。。有无限的可能性。有问题吗D
public enum InstrumentType {
GUITAR("Guitar"), //
BANJO("Banjo"), //
MANDOLIN("Mandolin"), //
DOBRO("Dobro"), //
FIDDLE("Fiddle"), //
LAMBEG_DRUM("Lambeg Drum");
private String description;
private InstrumentType(String description) {
this.description = description;
}
@Override
public String toString() {
return description;
}
}