为什么Kotlin有两种类型的构造函数?

Jia*_* Li 5 constructor kotlin primary-constructor

Kotlin具有两种构造函数,主要构造函数和次要构造函数。拥有两种类型的目的是什么?我认为,这会使代码更加复杂和不一致。如果两种类型的构造函数都创建类的对象,则它们对类同样重要。

同时,多个初始化程序还会带来混乱并降低可读性。

hot*_*key 5

当您需要将作为构造函数参数传递给实例的属性的值保存时,主构造函数涵盖了流行的用例。

基本上,主构造函数为声明属性和从构造函数参数初始化它提供了一种简写。

请注意,您完全可以在没有主构造函数的情况下执行相同操作:

class Foo {
    val bar: Bar

    constructor(barValue: Bar) {
        bar = barValue
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,由于这种情况在代码库中确实经常发生,因此 Kotlin 主要构造函数的作用是减少此处的样板:

class Foo(val bar: Bar)
Run Code Online (Sandbox Code Playgroud)

辅助构造函数可以补充或替换主要构造函数,以支持单个类的多个构造例程。