Kotlin使用params语法创建对象

Kotlin使用params语法创建对象,kotlin,Kotlin,我有一个目标 class Person { @JsonProperty("name") var name: String? = null @JsonProperty("id") lateinit var id: String} 只有一个空构造函数,我想创建一个人,所以我写道: val person = Person() person.name = "someName" person.id = "SomeId" 我很确定有一种更漂亮的语法,比如 val person = Person

我有一个目标

class Person {
@JsonProperty("name")
var name: String? = null

@JsonProperty("id")
lateinit var id: String}
只有一个空构造函数,我想创建一个人,所以我写道:

 val person = Person()
 person.name = "someName"
 person.id = "SomeId"
我很确定有一种更漂亮的语法,比如

val person = Person {name = "someName" , id = "someId"}
但我找不到一个例子。
我错过什么了吗?我应该创建一个二级构造函数来使用这种语法,还是有其他方法

您可以使用构造函数参数来实现它

class Person(
        @JsonProperty("name")
        var name: String? = null,
        @JsonProperty("id")
        var id: String
)



val person = Person(name = "someName", id = "someId")

另一种方法是使类和所需变量打开以被重写

open class Person {
    @JsonProperty("name")
    open var name: String? = null
    @JsonProperty("id")
    open var id: String = ""
}

val person =  object : Person() {
        override var name: String? = "SomeName"
        override var id = "SomeId"
}
请检查方法

您的代码如下所示:

val person = Person().apply {name = "someName", id = "someId"}
另一种方式-您可以将人员声明更改为(例如,只需将括号更改,将
var
替换为
val
并删除
lateinit
):

然后您将能够执行以下操作:

val person = Person(name = "someName", id = "someId")
val person = Person(name = "someName", id = "someId")