【发布时间】:2021-12-24 04:33:58
【问题描述】:
假设以下简单的示例数据类:
data class SomeDataClass(
var id: String,
var name: String,
var deleted: String
)
使用以下代码可以获取属性(并设置或获取它们的值):
import kotlin.reflect.full.memberProperties
val properties = SomeDataClass::class.memberProperties
print(properties.map { it.name }) // prints: [deleted, id, name]
print 语句中的映射将返回一个 List,其中包含按字母顺序排列的属性名称。我需要按照它们在源代码中定义的顺序列出,在这种情况下:[id, name, deleted]。
纯粹通过反思似乎无法实现。我能想出的唯一解决方案是使用定义顺序的辅助类:
val SomeDataClass_Order = listOf("id", "name", "deleted")
这对于一两个类来说不是问题,但对于数百个数据类来说却是个问题,其中最大的一个具有近百个属性。
欢迎任何想法。我不需要详细的代码,而是提示(如解析源代码、注释等)。
【问题讨论】:
标签: kotlin reflection