假设有以下简单的示例数据类:
data class SomeDataClass(
  var id: String,
  var name: String,
  var deleted: String
)
Run Code Online (Sandbox Code Playgroud)
使用以下代码可以获取属性(并设置或获取它们的值):
import kotlin.reflect.full.memberProperties
val properties = SomeDataClass::class.memberProperties
print(properties.map { it.name })   // prints:   [deleted, id, name]
Run Code Online (Sandbox Code Playgroud)
print 语句中的映射将返回一个列表,其中包含按字母顺序排列的属性名称。我需要按照源代码中定义的顺序列出列表,在本例中为:[id、name、deleted]。
单纯通过反思似乎无法实现。我能想到的唯一解决方案是使用定义顺序的辅助类:
val SomeDataClass_Order = listOf("id", "name", "deleted")
Run Code Online (Sandbox Code Playgroud)
对于一两个类来说这不是问题,但对于数百个数据类来说却是个问题,其中最大的一个数据类多达近一百个属性。
任何想法都会受到欢迎。我不需要详细的代码,而是需要提示(比如解析源代码、注释等)。
我正在尝试运行这个例子
fun main() {
    val mlist: MutableList<String> = mutableListOf<String>()
    val mapp: MutableMap<Int, MutableList<String>> = mutableMapOf(1 to mlist)
    println(mapp)
    mapp[1].add("a") // Correct is mapp[1]?.add("a")
    println(mapp)
}
Run Code Online (Sandbox Code Playgroud)
编译器正在抱怨 Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type MutableList<String>?.
尽管我已经定义了MutableList<String>为什么编译器会说有关MutableList<String>?.
什么编译器比我更懂?!我在这里缺少什么?