我想使用主要构造函数用@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
) {
// ...
}
答案 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 的一部分,则它是主要构造函数,如果它是类声明的一部分(在{
之后),则它是辅助构造函数。