gpt4 book ai didi

android - 具有 `?` 的可空变量与 lateinit 变量

转载 作者:太空狗 更新时间:2023-10-29 16:25:34 24 4
gpt4 key购买 nike

在 Kotlin/Android Activity/fragment 中定义全局变量的最佳方式是什么?

当您应该使用这两种方法定义全局变量时,有哪些不同的场景:

var viewpager: CustomViewPager? = null 

lateinit var viewpager: CustomViewPager

?

如果我使用前者,我就不必在我的代码中检查是否为 null。例如,如果我使用 lateinit对于以下内容:

viewpager = activity?.findViewById<CustomViewPager>(R.id.viewpager)那么我将不得不检查是否为 null。

最佳答案

使用 lateinit,你是说你绝对会确保在某处创建该变量的实例(否则,如果 lateinit,你的应用程序将抛出异​​常尚未初始化)然后该变量在项目的其余部分也不会为 null,与使用 null 相比,这意味着此对象可能在您的代码中的某处为 null整个项目,你将不得不处理整个项目的可空性。

如果您确定不会将变量设为 null 并且始终需要它的实例,请使用 lateinit

问自己这个问题:

Am I 100% sure that I will be using an instance of this variable somewhere in this class ?

如果答案是,您可能应该使用lateinit,因为lateinit 强制您创建它的一个实例。

如果答案是No,您可能应该改用可为空的字段。

取自此处:https://www.kotlindevelopment.com/lateinit-kotlin/

The lateinit keyword stands for late initialization. Lateinit comes very handy when a non-null initializer cannot be supplied in the constructor, but the developer is certain that the variable will not be null when accessing it, thus avoiding null checks when referencing it later.

关于android - 具有 `?` 的可空变量与 lateinit 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57133044/

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