我编写了下面的代码来获得一个KClass of Array<*>。
Array::class但是,此代码存在编译错误。
Kotlin:数组类文字需要一个类型参数,请在尖括号中指定一个
你知道原因或解决办法吗?
发布于 2016-12-18 10:56:03
在JVM平台上,类型映射到Java阵列,与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) // truehttps://stackoverflow.com/questions/41207060
复制相似问题