gpt4 book ai didi

java - 为什么可以将 java 可为空的返回值分配给 Kotlin Non-Nullable 变量?

转载 作者:行者123 更新时间:2023-12-03 23:59:05 25 4
gpt4 key购买 nike

我很惊讶编译了以下代码:

lateinit var progressBar: ProgressBar

onCreate中:

progressBar = view.findViewById(R.id.pb_loader)

findViewById声明它可以返回一个null,那么编译器怎么不强制我声明:

lateinit var progressBar: ProgressBar?

谁能帮我理解编译器什么时候强制执行,什么时候不强制执行?

最佳答案

View.findViewById是一个Java函数。 Kotlin 编译器无法确定它是否可以返回可空值,因为对于 Java,只存在可空类型(即使它们在运行时可能永远不会为空)。

为了文档(和互操作性)而引入了注释。 Some of them Kotlin 编译器可以使用它来确定正确的类型。

但如果编译器无法判断类型则视为platform type ,这意味着您作为开发人员必须在调用站点决定返回的值是否可能是 null

关于java - 为什么可以将 java 可为空的返回值分配给 Kotlin Non-Nullable 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65074869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com