首页 > 解决方案 > 对象和伴随对象之间的区别以及如何测试它们

问题描述

我有一个数据类PersonRecord。但是我从 API 收到的数据有不同的形式,我需要对其进行处理以提取 A。

  1. 第一个解决方案包括创建一个数据类PersonForm来表示 API 数据,然后创建一个独立的函数,该函数接受一个类实例的参数PersonForm并返回一个类实例PersonRecord

查看一些stackoverflow帖子,我还找到了以下解决方案:

2.

data class PersonRecord(val name: String, val age: Int, val tel: String){       
    object ModelMapper {
        fun from(form: PersonForm) = 
            PersonRecord(form.firstName + form.lastName, form.age, form.tel)           
    }
}
  1. 与两个相同,但使用伴随对象而不是对象。

有没有更惯用/有效/自然等的方法?在哪种情况下,每个都是首选?

谢谢。

标签: kotlin

解决方案


最惯用/最自然的方式是创建辅助构造函数:

data class PersonRecord(val name: String, val age: Int, val tel: String) {
    constructor(form: PersonForm) : this(form.firstName + form.lastName, form.age, form.tel)
}

推荐阅读