概述
当我们想要对类的一些属性进行初始化时,可以有几种方式进行初始化:
- 在主构造函数里初始化
- 在声明时初始化
- 在次构造函数里初始化
- 在初始化块里初始化
既然有这么多方式,同一属性就有可能在多个初始化的地方被引用,所以初始化代码的执行顺序就尤其重要。我们可以通过反编译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类初始化顺序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复