KPojo属性动态存取器
本章介绍Kronos在编译期为KPojo生成的属性动态存取器,支持在运行时动态地根据属性名来访问或修改属性值,且不依赖反射,性能更高,推荐使用。
KPojo 的Get 属性访问器
在Kronos中,我们可以使用KPojo的get属性访问器来访问数据表的字段。
kotlin
data class User(
val id: Int? = null,
val name: String? = null,
val age: Int? = null
) : KPojo
val user = User(
id = 1,
name = "Kronos",
age = 18
)
val valueOfId = user["id"] // 1
val valueOfName = user["name"] // "Kronos"
val valueOfAge = user["age"] // 18result
id -> 1
name -> Kronos
age -> 18
不存在的字段 -> nullKPojo 的Set 属性访问器
在Kronos中,我们可以使用KPojo的set属性访问器来修改数据表的字段。
kotlin
data class User(
val id: Int? = null,
val name: String? = null,
val age: Int? = null
) : KPojo
val user = User(
id = 1,
name = "Kronos",
age = 18
)
user["id"] = 2 // 不可变的值也是可以通过该访问器修改的
user["name"] = "Kronos" // 不可变的值也是可以通过该访问器修改的
user["age"] = 20 // 不可变的值也是可以通过该访问器修改的result
user.id == 2
user.name == "Kronos"
user.age == 20泛型代码在运行时拿到字段名时,可以使用这些访问器。使用同一 KPojo 字段元数据的 Map 转换 API 见 📚Map/KPojo 类型转换。