首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kotlin: Init函数和变量初始化

Kotlin: Init函数和变量初始化
EN

Stack Overflow用户
提问于 2021-04-13 09:10:37
回答 1查看 741关注 0票数 3

我正在为我的应用程序构建一个组件,我开始更频繁地使用init函数而不是构造函数,但现在奇怪的事情正在发生。如果我在init函数中调用函数来初始化list,它会在该列表中抛出NullPointerException。在特定类中初始化变量之前是否执行init函数?

异常将在removeAllViews中引发。

代码:

代码语言:javascript
运行
复制
init {
        createViews()
    }

    private var viewList = mutableListOf<ViewGroup>()
    private fun createViews(){
        removeAllViews()
        list.forEach { addItem(it) }
        changeViewsState(true)
    }

    private fun removeAllViews(){
        parent.removeAllViews()
        viewList.clear()
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-13 09:20:50

来自官方文档的这一节:https://kotlinlang.org/docs/classes.html#constructors

在实例初始化期间,初始化程序块按照类主体中出现的相同顺序执行,并与属性初始化器交织在一起。

因此,应该将变量声明放在init之前。

代码语言:javascript
运行
复制
private var viewList = mutableListOf<ViewGroup>()

init {
    createViews()
}
private fun createViews(){
    removeAllViews()
    list.forEach { addItem(it) }
    changeViewsState(true)
}

private fun removeAllViews(){
    parent.removeAllViews()
    viewList.clear()
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67071941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档