如何在辅助构造函数kotlin中访问主构造函数参数
How to access primary constructor parameters inside secondary constructor kotlin
我正在学习 kotlin,并且正在阅读有关构造函数:主要和次要的内容。
这是我的问题,我应该如何在辅助构造函数中访问主构造函数参数。我无法访问,但不确定为什么?为什么我无法直接访问它?
如果有人知道,请帮助我更好地理解这个概念。为什么我无法访问它?
我已经用两个构造函数创建了一个演示 class 这是我的代码:
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 块并将参数分配给 class 变量,它按预期工作。
您必须调用辅助构造函数,它需要一个尾随 name
参数:
val person1 = Person("Joe", 25, "name") //prints Age = 25
val person2 = Person("Joe", 25) //prints nothing
在您的示例中,主构造函数被选择为您的参数列表映射其参数。
在您的代码中 val person1 = Person("Joe", 25)
您正在调用一个具有两个参数的构造函数,这是第一个构造函数而不是第二个。
像这样调用第二个构造函数 val person1 = Person("Joe", 25,"name")
。
我希望这是清楚的。
我正在学习 kotlin,并且正在阅读有关构造函数:主要和次要的内容。
这是我的问题,我应该如何在辅助构造函数中访问主构造函数参数。我无法访问,但不确定为什么?为什么我无法直接访问它?
如果有人知道,请帮助我更好地理解这个概念。为什么我无法访问它?
我已经用两个构造函数创建了一个演示 class 这是我的代码:
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 块并将参数分配给 class 变量,它按预期工作。
您必须调用辅助构造函数,它需要一个尾随 name
参数:
val person1 = Person("Joe", 25, "name") //prints Age = 25
val person2 = Person("Joe", 25) //prints nothing
在您的示例中,主构造函数被选择为您的参数列表映射其参数。
在您的代码中 val person1 = Person("Joe", 25)
您正在调用一个具有两个参数的构造函数,这是第一个构造函数而不是第二个。
像这样调用第二个构造函数 val person1 = Person("Joe", 25,"name")
。
我希望这是清楚的。