Kotlin,Jackson:无法在主要构造函数中注释@JsonCreator

时间:2018-07-15 17:07:24

标签: kotlin jackson

我想使用主要构造函数用@JsonCreator进行注释,如下所示:

// error
@JsonCreator class User(
    @JsonProperty("username") var username: String,
    @JsonProperty("password") var password: String
) {
  // ...
}

但是@JsonCreator注释给出了错误“此注释不适用于目标'class'”。

使用辅助构造函数有效,但这是唯一(或最佳)方法吗?:

// works, but is there a better way?
class User @JsonCreator constructor(
    @JsonProperty("username") var username: String,
    @JsonProperty("password") var password: String
) {
  // ...
}

1 个答案:

答案 0 :(得分:6)

您在这里描述的内容:

class User @JsonCreator constructor(
    @JsonProperty("username") var username: String,
    @JsonProperty("password") var password: String
) {
  // ...
}

实际上是显式指定 primary 构造函数。您可以通过查看类声明来区分 primary secondary

class User constructor(/** **/) { // <-- primary

    constructor(/** ... **/) { // <-- secondary

    }

}

如果构造函数是类 header 的一部分,则它是主要构造函数,如果它是类声明的一部分(在{之后),则它是辅助构造函数。