kotlin - 在 Kotlin 中为 POJO 添加额外的属性
问题描述
我通过 Retrofit 从 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>
)
出于与此SO 答案相关的原因,我需要添加一个额外的属性。
额外的参数将是一个数据类 PaymentsMethods:
data class PaymentsMethods(
val paymentMethods: List<PaymentMethod>
)
创建时如何将属性值添加到 User 类?
这是我到目前为止所尝试的:
// 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)
}
}
它们都不起作用。任何建议将不胜感激。
解决方案
我希望这是你需要的:
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
}
推荐阅读
- java - weblogic:使用连接池的连接已经关闭错误
- sql - SQL 填充 2 周时间表的日历日期
- scala - 如何使用 approxQuantile 方法在 Scala 中查找分位数
- wpf - Wpf TreeViewItem Contextmenu 命令绑定不起作用
- r - 在 r 中使用 grepl 将值替换为子字符串
- r - 如何解决 RPostgresSQL 中的此编码错误?
- sql - 如何在 Oracle SQL 中使用总成本进行分组
- reactjs - 无法读取未定义 CompileError 的属性“类型”:从 CSS 选择器未定义的“npm run build”开始
- php - WordPress wp-login.php 文件自动更改
- reactjs - ReactJS 无法使用 ref 回调获取类组件的 Ref