写了一段 Android Koltin 的代码,做浮点数计算。但是编译时报错:
Type mismatch: inferred type is Double? but Double was expected
出错的代码如下,出错是 try body 那行:
fun calc(a: Double?, b: Double?, c: Double?): String {
var result = 0.0
try {
result = a * b / c
} catch (e: Exception) {
Toast.makeText(this, "出错了",
Toast.LENGTH_SHORT).show()
}
return result.toString()
}
解决方法,将 Double? 类型强制转换为 Double 类型。
即用双感叹号,强制将可空类型转换为非可空类型。
result = a!! * b!! / c!!
inferred type
inferred 推断的意思。
null safety 的几种处理方式
非常推荐阅读一下 Kotlin 官方的这篇文章
https://kotlinlang.org/docs/null-safety.html
里面详细列举了处理 null safety 的几种方式。