Type mismatch: inferred type is Double? but Double was expected

更新日期: 2021-04-30 阅读次数: 136 字数: 192 分类: Android

写了一段 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 的几种方式。

爱评论不评论