kotlin エラー「error: only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?」の解決方法
kotlinで、エラー「error: only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?」解決方法を記述してます。「null許容型」に対して「length」などで「null」に対して長さを取得しようとした際に発生します。
環境
- OS windows11 home
- java 19.0.1
- kotlin 1.7.20-release-201
エラー全文
以下の、コードで発生。
fun main() {
var str: String? = null
println(str.length)
}
エラーメッセージ
error: only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
println(str.length)
^
原因
「null許容型」のまま、「length」を使用しているため
対処法
「セーフコール演算子」を使用する。
fun main() {
var str: String? = null
println(str?.length) // null
}
または「エルビス演算子」を使用する方法もあります。
fun main() {
var str: String? = null
println(str ?: "nullです") // nullです
}
「let」を使用することも可能です。
fun main() {
var str: String? = null
str?.let {
println(it.length)
null
} ?: run {
println("nullです")
}
}
-
前の記事
kotlin 文字列同士を比較する 2023.01.03
-
次の記事
javascript animateを逆に再生させる 2023.01.04
コメントを書く