【发布时间】:2020-11-28 04:17:33
【问题描述】:
我有一个名为 report 的数据类,它本质上是一个变量列表列表 - 因此是嵌套数据类。
data class report(
var list1 : List1,
var list2 : List2
) : Parcelable
data class List1 (
var a: Boolean = false,
var b: Boolean = false,
) : Parcelable
data class List2 (
var c : Boolean = false,
var d : Boolean = false,
) : Parcelable
使用 Kotlin 和反射,我有一个 for 循环,它遍历顶层数据类并成功打印变量的名称。我想遍历每个嵌套类并打印变量名称,但如果不按名称显式引用嵌套类,我无法弄清楚如何做到这一点。第一个 for 循环打印正确的数据,但第二个 for 循环只打印“长度”。
for (prop in report::class.memberProperties) {
Log.d("DATACLASS", "${prop.name}")
for (subProp in prop::class.memberProperties){
Log.d("DATACLASS", "${subProp.name}")
}
}
在第二个循环中,我觉得“prop”没有被正确扩展为对嵌套类的引用。我尝试了诸如“report.prop.name”或“report.${prop.name})”之类的方法,但没有成功。我还尝试将 report.prop.name 分配给一个单独的变量。这是我缺少的一个简单的语法问题吗?我确实在 Stack 上阅读了其他类似的问题,但没有找到解决方案。是否可能与没有在正确的时刻创建类实例有关?
【问题讨论】:
标签: kotlin reflection