在 Kotlin 中,我如何 groupBy 类型
In Kotlin how do I groupBy type
我想按其泛型类型参数的子类型对列表进行分组。
这是一个包含三种类型对象的列表,它们都是某种类型 A 的子类型。
我能得到的最接近的是it.javaClass.typeName
或it.javaClass.kotlin
前者创建的字符串键不太理想,但我可以处理。后者创建了 KClassImpl
的键,我实际上无法导入,更不用说创建一个实例了。
如何按类型分组,然后访问结果映射中的不同键?
谢谢。
您可以将 kotlin class 实例引用为 Foo::class
data class Person(
val firstName : String,
val lastName : String
)
data class City(
val name : String,
val population: Int
)
fun main(args: Array<String>) {
val list = listOf(
Person("John", "Doe"),
Person("Eugene", "Cuckoo"),
City("London", 8500000),
City("Berlin", 3500000),
City("Hötyökmáró", 2)
)
val grouped = list.groupBy { it.javaClass.kotlin }
println("Persons: ${grouped[Person::class]}")
println("Cities: ${grouped[City::class]}")
}
我想按其泛型类型参数的子类型对列表进行分组。
这是一个包含三种类型对象的列表,它们都是某种类型 A 的子类型。
我能得到的最接近的是it.javaClass.typeName
或it.javaClass.kotlin
前者创建的字符串键不太理想,但我可以处理。后者创建了 KClassImpl
的键,我实际上无法导入,更不用说创建一个实例了。
如何按类型分组,然后访问结果映射中的不同键?
谢谢。
您可以将 kotlin class 实例引用为 Foo::class
data class Person(
val firstName : String,
val lastName : String
)
data class City(
val name : String,
val population: Int
)
fun main(args: Array<String>) {
val list = listOf(
Person("John", "Doe"),
Person("Eugene", "Cuckoo"),
City("London", 8500000),
City("Berlin", 3500000),
City("Hötyökmáró", 2)
)
val grouped = list.groupBy { it.javaClass.kotlin }
println("Persons: ${grouped[Person::class]}")
println("Cities: ${grouped[City::class]}")
}