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

文章目录

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

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式