我不了解this
的用法,如何创建对象或调用构造函数以及以下代码中发生的事情。
class Person {
var children: MutableList<Person> = mutableListOf<Person>();
constructor(parent: Person) {
parent.children.add(this)
}
}
class Person(val name: String) {
var children: MutableList<Person> = mutableListOf<Person>();
constructor(name: String, parent: Person) : this(name) {
parent.children.add(this)
}
}
来源:https://kotlinlang.org/docs/reference/classes.html
最佳答案
: this(...)
调用意味着调用另一个构造函数,因此每个对象也都是使用主要构造函数构造的。
class Person /* a */ (val name: String) {
var children: MutableList<Person> = mutableListOf<Person>();
/* b */ constructor(name: String, parent: Person) : this(name) {
parent.children.add(this)
}
}
在此示例中,在
a
之后有一个主构造函数,在b
之后有一个辅助构造函数,因此有两种实例化此类的方法。Person("abc")
。 Person("abc", Person("dfg"))
,并确保将同时调用主构造函数和辅助构造函数。 关于kotlin - 了解Kotlin中的辅助构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57402751/