代码之家  ›  专栏  ›  技术社区  ›  kike

在kotlin中向pojo添加额外属性

  •  1
  • kike  · 技术社区  · 6 年前

    我从一个api调用通过改造得到以下模型:

    data class User(
        @Expose val id: Int
        @Expose var username: String,
        @Expose var phoneNum: String?,
        @Expose var email: String?,
        @Expose var payments: List<PaymentMethod>
    )
    

    我需要添加一个额外的属性,原因是 this 所以回答。

    额外的参数将是数据类paymentsmethods:

    data class PaymentsMethods(
        val paymentMethods: List<PaymentMethod>
    )
    

    如何在创建属性值时将其添加到用户类?

    以下是我迄今为止所做的尝试:

    // add an attribute (with a default value) that won't be filled by the parser.
    data class User(
        @Expose val id: Int
        @Expose var username: String,
        @Expose var phoneNum: String?,
        @Expose var email: String?,
        @Expose var payments: List<PaymentMethod>,
        @Expose var paymentsObject: PaymentMethods = PaymentMethods(payments)
    )
    

    // create variable and set the value on init
    data class User(
        @Expose val id: Int
        @Expose var username: String,
        @Expose var phoneNum: String?,
        @Expose var email: String?,
        @Expose var payments: List<PaymentMethod>
    ){
    init {
        var paymentsObject: PaymentMethods = PaymentMethods(payments)
        }
     }
    

    它们都不起作用。任何建议都将不胜感激。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Sergio    6 年前

    我希望这是你需要的:

    data class User(
        @Expose val id: Int,
        @Expose var username: String,
        @Expose var phoneNum: String?,
        @Expose var email: String?
    ) {
        @Expose var payments: List<PaymentMethod> by Delegates.observable(listOf()) { 
            prop, oldValue, newValue ->
            paymentsObject = PaymentMethods(newValue)
        }
        lateinit var paymentsObject: PaymentMethods
    }