我有列舉類,我按值映射,當我回傳列舉值時,它總是抱怨空問題。
會話狀態.kt
enum class ConversationStatus(val status: String) {
OPEN("open"),
CLOSED("closed");
companion object {
private val mapByStatus = values().associateBy(ConversationStatus::status)
fun fromType(status: String): ConversationStatus {
return mapByStatus[status]
}
}
}
這總是抱怨這個問題。我怎樣才能解決這個問題?任何建議。謝謝

uj5u.com熱心網友回復:
有3種可能的方式去。正如您在螢屏截圖中看到的那樣,Android Studio 通常擅長建議修復。它建議將回傳型別更改為ConversationStatus?這意味著它可能回傳 null。然后就會變成這樣:
companion object {
private val mapByStatus = values().associateBy(ConversationStatus::status)
fun fromType(status: String): ConversationStatus? {
return mapByStatus[status]
}
}
另一種方法是通過添加!!到 return 陳述句來告訴編譯器您確保它始終不為 null 。像這樣:
companion object {
private val mapByStatus = values().associateBy(ConversationStatus::status)
fun fromType(status: String): ConversationStatus {
return mapByStatus[status]!!
}
}
但是,如果您呼叫該函式的狀態不是"open"或"closed"
或者,您可以提供回退值。我的意思是,它回傳一個默認值,以防您使用不是"open"或的字串呼叫函式"closed"。如果你想要那樣,OPEN你可以這樣做:
companion object {
private val mapByStatus = values().associateBy(ConversationStatus::status)
fun fromType(status: String): ConversationStatus {
return mapByStatus[status] ?: OPEN
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/313475.html
上一篇:在spring-boot-web中,如何在有classlevel@RequestMapping的方法上添加字符's'?
