¿Cómo get una KClass de Array?

Escribí el siguiente código para get una KClass de Array<*> .

 Array::class 

Sin embargo, este código tiene un error de compilation.

Kotlin: Array class literal requiere un argumento de tipo, por favor especifique uno en corchetes angulares

¿Conoces el motivo o la solución?

En la plataforma JVM, Array<T> types Kotlin Array<T> se asignan a matrices de Java , que, a diferencia de los types generics de Java, no están sujetas a borrado de tipo , en su lugar se reifican .

Significa, entre otras cosas, que las matrices con diferentes types de elementos están representadas por diferentes classs, que tienen diferentes tokens de Class<T> , y estos tokens de class también contienen la información sobre el tipo de elemento. No hay un tipo genérico de matriz, sino solo types de matriz para matrices con diferentes types de elementos.

Como el Array<T> genérico no existe, tampoco puede usar su reflection, solo puede get la información del tipo de time de ejecución de types de matrices con types de elementos específicos:

 val c = Array<Int>::class // corresponds to Java Integer[] type val d = Array<Array<String>>::class // corresponds to Java String[][] val e = IntArray::class // corresponds to Java int[] 

Si necesita verificar si una class arbitraria es un tipo de matriz, puede hacerlo con la reflexión de Java:

 val c = Array<Int>::class println(c.java.isArray) // true 
  • ¿Es seguro llamar a kclass.memberProperties en un object desconocido (Cualquiera)?
  • Crear una nueva instancia de una KClass
  • ¿Puedo usar kotlin.reflect para get un valor de un campo
  • ¿El comstackdor de Kotlin siempre conserva los nombres de los parameters en bytecode?
  • Implementando una interfaz de kotlin en java
  • Kotlin: ¿Cómo puedo usar la reflexión en los packages?
  • ¿Cómo hacer inferencia tipo Kotlin desde la reflexión KClass?
  • Kotlin: doble operador de colon (reflexión) sobre
  • Los literales de class Kotlin con el lado izquierdo vacío aún no son compatibles.
  • Kotlin: isAssignableFrom y reflexiones del tipo de reflexión
  • Usar reflexión para pasar y modificar una primitiva sin usar matriz