我不了解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/

    10-17 01:49