【问题标题】:How to access primary constructor parameters inside secondary constructor kotlin如何在辅助构造函数kotlin中访问主构造函数参数
【发布时间】:2020-02-26 08:21:18
【问题描述】:

我正在学习 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:我知道我可以编写 init 块并将参数分配给类变量,并且它按预期工作。

【问题讨论】:

  • 你没有调用辅助构造函数。
  • 多么愚蠢的错误感谢您指出。 :)

标签: android kotlin constructor primary-constructor


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    在您的代码val person1 = Person("Joe", 25) 中,您正在调用一个有两个参数的构造函数,这是第一个构造函数而不是第二个。 像val person1 = Person("Joe", 25,"name") 那样调用第二个构造函数。 我希望这很清楚。

    【讨论】:

      猜你喜欢
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多