如何获得一个KClass的数组?

我写了下面的代码来获得一个KClass的Array<*>

 Array::class 

但是,这段代码有一个编译错误。

Kotlin:数组类的文字需要一个类型参数,请在尖括号中指定一个

你知道原因或解决方案吗?

在JVM平台上, Kotlin Array<T>类型被映射到Java数组 ,这与Java泛型不同,不会被类型擦除 ,而是被赋值 。

这意味着,除了别的以外,具有不同元素类型的数组由不同的类表示,它们具有不同的Class<T>标记,并且这些类标记还包含关于元素类型的信息。 没有泛型数组类型,但是只有数组类型不同的元素类型。

由于泛型 Array<T>不存在,所以也不能使用它的反射,你只能得到具有指定元素类型的数组类型的运行时类型信息:

 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[] 

如果你需要检查一个任意的类是否是一个数组类型,你可以用Java反射来完成:

 val c = Array<Int>::class println(c.java.isArray) // true