Kotlin使用params语法创建对象

时间:2018-07-17 11:23:59

标签: 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 {name = "someName" , id = "someId"}

但是我找不到一个例子。 我错过了什么吗?我应该创建一个辅助构造函数来使用此语法,还是有另一种方法?

2 个答案:

答案 0 :(得分:0)

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

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"
}

答案 1 :(得分:0)

请检查apply方法。

您的代码将如下所示:

val person = Person().apply {name = "someName", id = "someId"}

另一种方法-您可以将Person的声明更改为(例如,将方括号,将var替换为val并删除lateinit):

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

然后您将能够执行此操作:

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