Kotlin的数据类,Android Room和自定义setter

Vin*_*rat 5 android kotlin android-room

我有一个Android Room的实体,看起来像那样.到目前为止,没有后顾之忧.

@Entity(tableName = "users",
        indices = arrayOf(Index(value = "nickName", unique = true)))
data class User(@ColumnInfo(name = "nickName") var nickName: String,
                @ColumnInfo(name = "password") var password: String) {

    @ColumnInfo(name = "id")
    @PrimaryKey(autoGenerate = true)
    var id: Long = 0
}
Run Code Online (Sandbox Code Playgroud)

现在我需要加密密码.使用Java,只需使用setter就可以完成.

你会怎么用Kotlin做到这一点.我找不到结合Android Room,自定义setter和数据类的解决方案.

小智 -5

    @Entity(tableName = "users",
            indices = arrayOf(Index(value = "nickName", unique = true)))
    data class User(@ColumnInfo(name = "nickName") var nickName: String,
                    @ColumnInfo(name = "password") var password: String) {
    var _password = password
        set(value): String{
           //encrypt password
        }
        @ColumnInfo(name = "id")
        @PrimaryKey(autoGenerate = true)
        var id: Long = 0
    }
Run Code Online (Sandbox Code Playgroud)

这将创建一个自定义设置器,因此每次设置密码时,您都可以在设置器内对其进行加密。