2 回答

TA貢獻2039條經驗 獲得超8個贊
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() 方法,您就可以獲得當前選擇的枚舉類型的字符串值。您甚至可以刪除您的類型字符串。
添加回答
舉報