Kotlin有主构造函数和辅助构造函数以及init块.我们不能在主构造函数中执行任何代码.因此,Kotlin提供了一个init块,它在实例创建后立即执行其中的代码.
我找不到任何不能用主块和初始化块解决的问题. 我不认为这与任何性能问题有关.
我的问题是,为什么我们有一个辅助构造函数,为什么我们应该使用一个辅助构造函数?
Kotlin有主构造函数和辅助构造函数以及init块.我们不能在主构造函数中执行任何代码.因此,Kotlin提供了一个init块,它在实例创建后立即执行其中的代码.
我找不到任何不能用主块和初始化块解决的问题. 我不认为这与任何性能问题有关.
我的问题是,为什么我们有一个辅助构造函数,为什么我们应该使用一个辅助构造函数?
它适用于需要将不同的参数类型传递给构造函数的情况.
例如,假设您有一个类表示一个人及其出生月份.出生月份由Month Enum类表示.但有时将月份的数字表示用作Int可能会很方便.
data class Person(
val name: String,
val birthMonth: Month
) {
constructor(name: String, birthMonth: Int): this(name, Month.of(birthMonth))
}
或者,如果要构建树,可以在创建 node 时自动将 node 添加到其父 node ,这可能会很方便:
class Node(
val name: String
) {
val children = mutableListOf<Node>()
constructor(name: String, parentNode: Node): this(name) {
parentNode.children.add(this)
}
}