在Kotlin我如何groupBy类型

我想通过其泛型类型参数的子类型对列表进行分组。

这是一个具有三种类型的对象的列表,都是某种类型的子类型A.

我可以得到最接近的是it.javaClass.typeNameit.javaClass.kotlin

前者创建了不理想的字符串键,但我可以处理。 后来创建KClassImpl我不能实际导入的关键,更不用说创建一个实例。

你怎么groupBy类型,然后访问结果地图中的不同键?

谢谢。

您可以将kotlin类实例称为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]}") }