En Kotlin, ¿cómo puedo groupBy tipo

Me gustaría agrupar una list por los subtypes de su argumento de tipo genérico.

Es una list con tres types de objects, todos son un subtipo de algún tipo A.

Lo más cercano que puedo get es it.javaClass.typeName o it.javaClass.kotlin

El primero crea keys de cadenas que no son ideales, pero puedo lidiar con ellas. Más tarde crea keys de KClassImpl que no puedo importar, y mucho less crear una instancia de.

¿Cómo se agrupan? Escriba y luego acceda a las diferentes teclas en el map resultante.

Gracias.

Puede referirse a las instancias de la class kotlin como 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]}") } 
  • ¿Cuál es el equivalente de Kotlin de String de Java?
  • Los generics de Kotlin Array <T> dan como resultado "No se puede usar T como parámetro de tipo reificado. Usa una class en su lugar "pero List <T> no
  • Kotlin. Aplicación básica de JavaFX
  • Extensiones y variables de Kotlin para Android
  • El depurador Java seleccionado actualmente no admite puntos de interrupción de tipo 'Kotlin Line Breakpoints'
  • Problema de compilation Dagger2 en kotlin
  • Kotlin: Evite crear FqNameUnsafe y FqName
  • Kotlin JS Anulación de la function 'externa' con error de parameters opcionales
  • En kotlin, cuando sobrecarga el operador inc (), aparece un error
  • Usar Glide para almacenar imágenes de la vista web en caching
  • Error del adaptador ExpandableListView en Kotlin