init 初始化块中无法 return?

Quibbler 11月前 326

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的。


不忘初心的阿甘
最新回复 (0)
    • 安卓笔记本
      2
        登录 注册 QQ
返回
仅供学习交流,切勿用于商业用途。如有错误欢迎指出:fluent0418@gmail.com