kotlin - 在Kotlin中将一个对象转换为另一个对象的更好方法是什么?

标签 kotlin design-patterns object-object-mapping

我的项目中有多个对象类,需要将一个对象转换为另一个对象。

我尝试创建一个通用util并开始对其进行转换,代码开始增长,并且无法在单个文件中进行管理。

然后,我开始创建类似于此的单个transformer类,

/** This transforms [Square] to [Rectangle] **/
object SquareToRectangleTransformer {
   fun transform(square: Square): Rectangle {
       checkNotNull(square.side) { missing ("side") }
       val length = square.side
       val breadth = square.side
       return Rectangle(length, breadth
   }
}

现在我的项目有多个类似于上面的变压器类,现在我发现这种方法是一种反模式,因为它会引起类爆炸问题。

我搜索了其他替代方案,例如插件或依赖库,它们可以用更少的代码和更少的this answer interesting为我完成这项工作。

Kotlin中有任何类似的图书馆可以为我完成这项工作吗?

最佳答案

我建议您为将要进行的每个转换创建扩展功能。对我来说,这是一种非常清晰,不错的方法。几乎所有的kotlin stdlib都以相同的方式编写。例:

   fun Square.transform(): Rectangle {
       val length = square.side
       val breadth = square.side
       return Rectangle(length, breadth)
   }
}

您将可以将此函数作为成员函数调用:
val square = Square(4)
val rectangle = square.transform()

您也可以避免checkNotNull(square.side) { missing ("side") },如果您将类型设为代表不可为空的那一面:
data class Square(
    val side: Int
)

关于kotlin - 在Kotlin中将一个对象转换为另一个对象的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57840998/

相关文章:

android - 当值是android View 时,Kotlin当多个值不起作用时

java - 继承会影响应用程序的性能吗?

Scala 向类添加可堆叠属性

c++ - 数据结构优化

oop - 设计类 : Each class encapsulate object of other related class

java - json 到 java 对象(使用映射)?

database - Kotlin:sqlite数据库表未创建

kotlin - Kotlin callInPlace 合约有哪些好处?

objective-c - Restkit 对多关系附加到集合而不是设置新集合