ある時、null + nullするとNonNullになったので少し調べました。
例
val hoge: String = null // エラー
val hoge: String = null + null // エラーじゃない
+
を参照すると次のようになっていました。
public operator fun String?.plus(other: Any?): String
次のような場面で遭遇しました。
Map
のget
はNullableなので、強制アンラップしたり、例外にしたりでしたが、conf2のようなパターンでは突然NonNullになっています。nullnull
にいつの間にかならないように注意しないと行けなさそうです。なんか不思議な感じ。
val config = mapOf("aaa" to "bbb")
val conf1: String = config["hoge"] ?: throw Exception() // -> throw Exception
val conf2: String = config["hoge"] + config["fuga"] // -> conf2 = nullnull