首页 > 解决方案 > 如何在辅助构造函数kotlin中访问主构造函数参数

问题描述

我正在学习 kotlin,并且正在阅读有关构造函数:主要和次要的内容。

这是我的问题,我应该如何访问辅助构造函数中的主构造函数参数。我无法访问,但我不知道为什么?为什么我无法直接访问它?
如果有人知道,请帮助我更好地理解这个概念。为什么我无法访问它?

我创建了一个带有两个构造函数的演示类,这是我的代码:

fun main(args: Array<String>) {

    val person1 = Person("Joe", 25)
    println("First Name = ${person1.firstName}") // working, printing first name 

}

class Person(val firstName: String, var age: Int) {

    constructor(sectionName: String, id: Int, name: String) : this(sectionName,id)  {
        println("Age = ${age}") // not working, no output
    }

}

还是我做错了什么?

PS:我知道我可以编写初始化块并将参数分配给类变量,它按预期工作。

标签: androidkotlinconstructorprimary-constructor

解决方案


您必须调用辅助构造函数,它需要一个尾随name参数:

    val person1 = Person("Joe", 25, "name") //prints Age = 25
    val person2 = Person("Joe", 25) //prints nothing

在您的示例中,选择主构造函数作为参数列表映射其参数。


推荐阅读