如何在Kotlin中访问特定的init块

ajsxfq5m  于 2022-11-25  发布在  Kotlin
关注(0)|答案(1)|浏览(147)

我有一个带有两个初始化块的Kotlin类。我的构造函数包含两个参数,一个是String类型的list,另一个是可以为null的boolean类型。
我希望如果我用一个参数(String列表)创建类的示例,我只能执行第一个初始化块,如果我用两个参数创建示例,我可以执行第二个初始化块

class User(val type1: List<String>, val type2: Boolean?) {
    init {
        println("First initializer block executed ")
    }
    
    init {
        println("Second initializer block executed ")
    }
}

fun main() {
    val list1: List<String> = listOf("One", "Two", "Three")
    val user1 = User(list1,false)
}

请问我该怎么做?

rkue9o1l

rkue9o1l1#

没有必要有两个初始化。只要做一个内部有逻辑的初始化来决定要做什么。例如:

class User(val type1: List<String>, val type2: Boolean? = null) {
    init {
        if (type2 == null) {
            println("First initializer block executed ")
        } else {
            println("Second initializer block executed ")
        }
    }
}

相关问题