嗨,我有一个普通的数据类
1-migr migr/2 0 0 migr/2
migr/2 1-migr migr/2 0 0
M = 0 migr/2 1-migr migr/2 0
0 0 migr/2 1-migr migr/2
migr/2 0 0 migr/2 1-migr
及其@Parcelize版本
data class Message(
val code: Int,
val message: String?
)
现在如何编写转换器,以便我可以将类1映射到1?
答案 0 :(得分:0)
您无需创建一些特殊的逻辑即可进行转换。您唯一要做的就是使用MessagePresentation
对象的字段创建Message
对象。
...
val message = Message(code, message)
val messagePresentation = MessagePresentation(message.code, message.message)
...
例如,您可以在MessagePresentation
类中使用Message
arg指定其他构造函数。
您还可以像这样创建扩展功能
fun Message.toPresentation(): MessagePresentation =
MessagePresentation(
code = code
message = message
)
答案 1 :(得分:0)
您可以通过多种方式实现这一目标:
private fun Message.toMessagePresentation(): MessagePresentation {
return MessagePresentation(code, message)`
}
data class Message(
val code: Int,
val message: String?
) {
fun toMessagePresentation(): MessagePresentation {
return MessagePresentation(code, message)
}
}
@Parcelize
data class MessagePresentation(
val code: Int,
val message: String?
) : Parcelable {
constructor(message: Message) : this(message.code, message.message)
}
输出-
val message = Message(0, "hello")
val messageRepresentation1 = message.toMessagePresentation()
val messageRepresentation2 = message.toMessagePresentation()
val messageRepresentation3 = MessagePresentation(message)