首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在科特林空置的第二中心

在科特林空置的第二中心
EN

Stack Overflow用户
提问于 2016-06-15 22:24:11
回答 2查看 180关注 0票数 2
代码语言:javascript
复制
data class UserRto(val lastName: String, val firstName: String, val email: String, val password: String) {
    constructor() : this("", "", "", "")
}

这是获得第二个不带参数的ctor的最简单方法(对于json反判)吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-16 04:34:30

如果所有参数都有默认值,则生成无参数构造函数的约定(只适用于这种情况:):

代码语言:javascript
复制
//Kotlin
data class UserRto(val lastName: String = "",
                   val firstName: String = "",
                   val email: String = "",
                   val password: String = "")

//Java
new UserRto();
new UserRto("a", "a", "a", "a");

使用显式空构造函数的解决方案的优点是必须提供所有参数,或者不提供参数。但在大多数情况下,它并不是什么大事,而且很少被使用。

票数 4
EN

Stack Overflow用户

发布于 2016-06-17 13:27:57

您没有指定正在使用的JSON反序列化库。很可能根本不需要这个辅助构造函数,并且可以直接使用包含所有属性作为参数的类构造函数。

  • 对于Jackson,使用Jackson-Kotlin模块自动处理所有Kotlins情况,包括调用所有参数为属性的构造函数或工厂的能力(在2.8.x中,这包括用于JSON中缺失属性的参数的默认值)
  • 对于Gson来说,我认为科特森可能也会这么做。

谷歌可能也会为这些或其他图书馆寻找其他图书馆。

那么你只需要:

代码语言:javascript
复制
data class UserRto(val lastName: String, val firstName: String, val email: String, val password: String)

对于Jackson-Kotlin模块,您可以简单地:

代码语言:javascript
复制
val user: UserRto = jacksonObjectMapper().readValue(jsonString)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37846813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档