num
設置時應該是可以爲空的,但它返回的內容應始終爲非空(具有默認值)。即使背景字段可以爲空也讓吸氣劑返回不可空的類型
class Test {
var num: Int? = null
get() = field ?: 5 // default value if null
}
雖然返回的值始終不爲空的對我來說很有意義以下甚至不進行編譯,因爲該類型不是推斷,但是從支持字段採取:
val a: Int = Test().num
類型不匹配:推斷的類型是Int?但詮釋預計
問題是我如何可以改變吸氣的返回類型爲非空的?如果我這樣做,編譯器說:
消氣返回類型必須等於屬性的類型,即 「詮釋?」
我知道我可以與另一個屬性numNotNullable
(不支持字段)解決它。
class Test {
var num: Int? = null
get() = field ?: 5 // default value if null
val numNotNullable: Int
get() = num ?: 5
}
val c: Int = Test().numNotNullable
但這不是我想要的。 還有別的辦法嗎?
既然您知道這是安全的,您可以在技術上使用'.num !!'。這並不好,但在這種情況下它仍然安全。 – chris
您的支持屬性解決方案絕對是正確的,它甚至是用於查找功能請求+1的文檔https://kotlinlang.org/docs/reference/properties.html#backing-properties – zsmb13