数据类中的kotlin默认值不为零

时间:2018-08-17 11:36:37

标签: kotlin data-class

我有一个简单的User数据类

data class User(@PrimaryKey(autoGenerate = true) val id: Long, val _id: String, val name: String, val about: String,
                    val phoneNumber: String, val token: String,
                    val lastLogin: String, val avatarUrl: String, @Embedded val location: Location,
                    val emailId: String, val gender: Boolean, val timestamp: Long = System.currentTimeMillis())

您可以看到最后一个参数是val timestamp: Long = System.currentTimeMillis()

响应来自网络改型,并使用GSON解析

timestamp不在响应json中,只是我需要做一些逻辑的额外字段。问题在于值始终为0。应该是当前时间戳

1 个答案:

答案 0 :(得分:1)

这可以解决问题,

data class User(@PrimaryKey(autoGenerate = true) val id: Long, val _id: String, val name: String, val about: String,
                val phoneNumber: String, val token: String,
                val lastLogin: String, val avatarUrl: String, @Embedded val location: Location,
                val emailId: String, val gender: Boolean) {
    var timestamp: Long = System.currentTimeMillis()
    get() = if(field > 0) field else {
        field = System.currentTimeMillis()
        field
    }
}