2 回答
TA贡献2039条经验 获得超7个赞
switch
根据JEP 325 ,可以返回以 Java 12 开头的语句的值。检查你的 Java 版本,如果它小于 12,那么你不能switch
那样使用,你必须首先将预期值保存在本地变量中。我的观点是,如果你的 java 版本早于 12,那么你必须这样做:
String num = "";
switch (this)
{
case MOTORAD:
num = "1";
break;
case LKW:
num = "2";
break;
case PKW:
num = "3";
break;
case FAHRRAD:
num = "4";
break;
}
return "Fahrzeuge{" + num +
"typ:" + this.typ +
", ps:" + this.ps +
", reifen:" + this.reifen +
", gewicht:" + this.gewicht +
"}";
但如果您安装了 Java 12(或更高版本),那么您可以执行此操作(注意不同的语法!):
return "Fahrzeuge{" +
switch (this)
{
case MOTORAD -> "1";
case LKW -> "2";
case PKW -> "3";
case FAHRRAD -> "4";
}
+ "typ:" + this.typ +
", ps:" + this.ps +
", reifen:" + this.reifen +
", gewicht:" + this.gewicht +
"}";
请注意,如果数字与声明枚举值的顺序相对应,您可以简单地使用ordinal():
return "Fahrzeuge{" + this.ordinal() +
"typ:" + this.typ +
", ps:" + this.ps +
", reifen:" + this.reifen +
", gewicht:" + this.gewicht +
"}";
TA贡献1848条经验 获得超2个赞
我认为你真的不需要 switch 语句,因为枚举的超类已经知道你的“类型”的名称:
@Override
public String toString()
{
return "Fahrzeuge: " + super.toString() +
", ps:" + this.ps +
", reifen:" + this.reifen +
", gewicht:" + this.gewicht;
}
只需调用超类的 toString() 方法,您就可以获得当前选择的枚举类型的字符串值。您甚至可以删除您的类型字符串。
添加回答
举报