每当我将一个调用作为非空断言时,android studio 会从其他相同变量中删除警告

Whenever i make one call as non-null asserted, android studio removes warning from the other same variables

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

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

函数参数不变。您的第一行代码保证 e 为非空,或者不会到达后续代码行,因为如果 e 为空,它将抛出 KotlinNullPointerException。所以从逻辑上讲,如果到达第二行代码,e 不可能为 null,编译器可以将其智能转换为不可为 null 的条目。

这是而非可能可以使用!!的极少数情况之一。如果您将此函数内的代码声明为可为空的函数参数,则没有理由认为 e 为非空。通过声明它可为空,您的函数宣布(向使用它的程序员)将 null 作为参数传递是安全的。