扣丁书屋

坑爹的 lateinit

2年以前  |  阅读数:166 次  |    

lateinit 本身的含义是延迟初始化,但是在编译时必须保证 lateinit 修饰的参数被初始化,否则编译不过去的

今天就碰到了这个问题,我有个对象函数外接可能不会赋值的,我用的 lateinit 修饰的这个对象函数,结果死活编译不过去,蛋疼死了

最后发现只能这么写:

// 声明时用 ?. null 
var mCallBack: MyWebViewCallBack? = null

// 使用时 ?. !! 才行
if (mCallBack != null) {
    result = mCallBack?.shouldOverrideUrlLoading(view, url)!!
    return result
}

相关文章: