我是靠谱客的博主 爱笑白羊,最近开发中收集的这篇文章主要介绍kotlin类初始化顺序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

当我们想要对类的一些属性进行初始化时,可以有几种方式进行初始化:

  • 在主构造函数里初始化
  • 在声明时初始化
  • 在次构造函数里初始化
  • 在初始化块里初始化

既然有这么多方式,同一属性就有可能在多个初始化的地方被引用,所以初始化代码的执行顺序就尤其重要。我们可以通过反编译Java字节码来研究下类属性初始化顺序:

看下反编译成java字节码是怎样的:

 汇总上图信息,可以得到以下初始化顺序。
(1) 主构造函数里声明的属性( val health: Int)
(2) 类级别的属性赋值( val race = "DWARF", val town = "Bavaria", val name = _name)
(3) init 初始化块里的属性赋值和函数调用( alignment = "GOOD"、 println 函数)
(4) 次构造函数里的属性赋值和函数调用( town = "The Shire")

需要说明的是, init 初始化块类级别的属性赋值的顺序取决于定义的先后。如果 init 初始化块定义在类级别的属性赋值之前,那么它就比类级别的属性赋值早一步初始化。
 


 

最后

以上就是爱笑白羊为你收集整理的kotlin类初始化顺序的全部内容,希望文章能够帮你解决kotlin类初始化顺序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部