每当我将一个调用断言为非null时,androidstudio就会从其他相同的变量中删除警告



每当我试图在一个函数内创建几个布尔变量时,该函数具有e:Entry?在它的构造函数中,androidstudio通知我只允许安全或非null断言调用。因此,每当我将一个调用断言为非null时,androidstudio就会从其他变量中删除此警告,代码就会正常工作。为什么会这样?

val isHighResult = e!!.y >= 3.5
val isMediumResult = e.y > 1.5 && e.y < 3.5
val isLowResult = e.y <= 1.5

函数参数是常量。您的第一行代码保证e不是null,或者不会到达其他代码行,因为如果e为null,它将抛出KotlinNullPointerException。因此,从逻辑上讲,如果到达第二行代码,e就不可能为null,编译器可以将其智能地强制转换为不可为null的条目。

这是而不是使用!!的罕见情况之一。如果您将e声明为可为null的函数参数,那么该函数内的代码就没有理由期望它为非null。通过声明它可以为null,您的函数(向使用它的程序员(宣布将null作为参数传递是安全的。

相关内容

  • 没有找到相关文章

最新更新