init 初始化块中无法 return?
在 Kotlin 类中 , 可以定义 init 初始化块 , 在其中可以为 变量赋值 , 执行一些检查相关的代码 , 该 init 初始化块在 创建类实例对象 时执行 。
调用顺序为:主构造函数 -> init -> 次构造函数。而且允许定义多个 init 初始化块,它们将按顺序执行。
最近用Kotlin写代码的时候才发现,在init 初始化块中不能直接return:
刚发现的时候有点疑惑,但仔细一想,这样规定也有些道理。Kotlin允许定义多个 init 初始化块,如果在某一个中return返回了,那么后面还该不该继续执行呢?
用Koltin写一段demo代码,编译成class。
用jd-gui查看class文件,可以发现,Kotlin在编译过程中,将init 初始化块按顺序“合成”到主构造函数中。很明显可以看到调用顺序:主构造函数 -> init -> 次构造函数。
正因为如此,干脆就不允许在 init 初始化块中直接return。但也不是不能“出现”return,可以这样写,在lambda表达式中return:
只是不允许在 init 初始化块中直接return,在构造函数中还是可以根据需要return的。
精彩的人生需要浪漫、无畏和勇气。