在Kotlin中,如果我有一个调用构造函数的函数(或另一个函数),是否可以将默认参数的确定委托给基础构造函数/函数?
此语法无效,但希望可以说明我正在尝试做的事情:
fun buildMyObject(stringParam: String?, intParam: Int?): MyClass {
return MyClass(stringParam, intParam)
}
class MyClass(val stringParam: String = "Hello world!", val intParam: Int = 42)
答案 0 :(得分:2)
完全不支持您想要的内容。但是,如果您对buildMyObject
的住处有一定的灵活性,则可以使用以下方法:
class MyClass(val stringParam: String = defaultString, val intParam: Int = defaultInt) {
private constructor(stringParam: String?, intParam: Int?) : this(
stringParam ?: defaultString,
intParam ?: defaultInt
)
companion object {
private const val defaultString = "Hello world!"
private const val defaultInt = 42
fun buildMyObject(stringParam: String?, intParam: Int?): MyClass {
return MyClass(stringParam, intParam)
}
}
}
这有几个不错的特点:
MyClass
构造函数when
并在有或没有每个参数的情况下调用,构造函数的数量并不会成倍增长(想象一下,如果添加第三个参数会发生什么情况!)