[英]Why can a java nullable returned value be assigned to a Kotlin Non-Nullable variable?
我很惊讶以下代码被编译:
lateinit var progressBar: ProgressBar
在onCreate
:
progressBar = view.findViewById(R.id.pb_loader)
findViewById
声明它可以返回null
,那么编译器如何不强制我声明:
lateinit var progressBar: ProgressBar?
有人可以帮助我了解编译器何时执行以及何时不执行吗?
View.findViewById
是 Java function。 Kotlin 编译器无法确定它是否可以返回可空值,因为对于 Java 仅存在可空类型(即使它们在运行时可能永远不会是 null)。
为了文档(和互操作性)而引入了注释。 Kotlin 编译器可以使用其中一些来确定正确的类型。
但是如果编译器无法确定类型是否被视为平台类型,这意味着您作为开发人员必须在调用站点决定返回的值是否可能是null
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.