Kotlin可空类型与非空类型以及`lateinit` 的作用

打印 上一主题 下一主题

主题 950|帖子 950|积分 2850

在 Kotlin 中,变量可以是可空类型或非空类型。可空类型表示变量可以包含一个空值(null),而非空类型表示变量不能包含空值。
可空类型与非空类型



  • 非空类型:默认情况下,Kotlin 中的变量是非空类型。比方,var recyclerView: RecyclerView 表示这个变量永久不能为 null。在编译时,Kotlin 会逼迫包管非空类型的变量在任何时候都不为 null。
  • 可空类型:可空类型变量可以包含 null 值。比方,var recyclerView: RecyclerView? 表示这个变量可以为 null。在使用可空类型变量时,必须进行空值查抄以避免 NullPointerException。
lateinit 的作用

使用 lateinit 修饰符可以声明一个非空类型的变量,并允许稍后初始化它。这在 Android 开辟中很常见,因为许多视图组件(如 RecyclerView)需要在 onCreate 或 onViewCreated 方法中初始化,而不能在声明时立即赋值。
如果不使用 lateinit,可以选择将变量声明为可空类型(即 RecyclerView?),但这样在每次使用该变量时都需要进行空值查抄,增加了代码的复杂性。比方:
  1. // 不使用 lateinit,声明为可空类型
  2. private var recyclerView: RecyclerView? = null
  3. override fun onCreate(savedInstanceState: Bundle?) {
  4.     super.onCreate(savedInstanceState)
  5.     setContentView(R.layout.activity_main)
  6.     // 初始化 recyclerView
  7.     recyclerView = findViewById(R.id.my_recycler_view)
  8.     // 使用 recyclerView 时需要进行空值检查
  9.     recyclerView?.layoutManager = LinearLayoutManager(this)
  10.     recyclerView?.adapter = MyAdapter(myDataset)
  11. }
复制代码
使用 lateinit 则可以避免每次使用变量时的空值查抄:
  1. // 使用 lateinit 声明非空类型变量
  2. private lateinit var recyclerView: RecyclerView
  3. override fun onCreate(savedInstanceState: Bundle?) {
  4.     super.onCreate(savedInstanceState)
  5.     setContentView(R.layout.activity_main)
  6.     // 初始化 recyclerView
  7.     recyclerView = findViewById(R.id.my_recycler_view)
  8.     // 直接使用 recyclerView,无需空值检查
  9.     recyclerView.layoutManager = LinearLayoutManager(this)
  10.     recyclerView.adapter = MyAdapter(myDataset)
  11. }
复制代码
总结

使用 lateinit 修饰符可以在 Kotlin 中声明一个非空类型的变量,并允许稍后初始化它,从而避免了每次使用该变量时的空值查抄,进步了代码的简洁性和可读性。
代码参考

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表