簡體   English   中英

Android Kotlin 將數據 class 轉換為枚舉 class

[英]Android Kotlin convert data class into enum class

這里CustomerBodyModel是數據類。 我需要一個內部 function 在UsertoCustomer() ,將User class轉換為Customer class 我被困在將Boolean type更改為Customer.Type

客戶 Class

data class Customer(
    val id: String,
    val bodyModel: BodyModel?,
    val isDrinks : Type
){

enum class Type(val type: String, val value: Boolean) {
        NO("No", false),
        YES("Yes", true)
    }
}

車身型號 class

data class BodyModel(
    val height: Int?,
    val weight: Int?
)

用戶 class

data class User(
    val id: String,
    val height: Int?,
    val isDrinks: Boolean?
){

@Ignore
fun toCustomer() = Customer(
    id, 
    BodyModel(height?:-1, -1 ),
    Customer.Type(?????????)
)

你可以這樣做:

@Ignore
fun toCustomer() = Customer(
    id, 
    BodyModel(height?:-1, -1 ),
    if (isDrinks == true) Customer.Type.YES else Customer.Type.NO
)

如果這是一個玩具示例並且您想要更通用的東西,請嘗試以下操作:

enum class Type(val type: String, val value: Boolean) {
  NO("No", false),
  YES("Yes", true);

  companion object {
    val map: Map<Boolean, Type> = Type.values().associateBy{it.value}
  }
}

然后這樣做

fun toCustomer() = Customer(
    id, 
    BodyModel(height?:-1, -1 ),
    Customer.Type.map[isDrinks]
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM