首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得阵列的KClass?

如何获得阵列的KClass?
EN

Stack Overflow用户
提问于 2016-12-18 09:28:18
回答 1查看 4K关注 0票数 8

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

代码语言:javascript
复制
Array::class

但是,此代码存在编译错误。

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

你知道原因或解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-18 10:56:03

在JVM平台上,类型映射到Java阵列,与Java不同,Java阵列不受类型擦除约束,而是具体化

这意味着,除其他外,具有不同元素类型的数组由具有不同Class<T>标记的不同类表示,而且这些类标记还包含有关元素类型的信息。没有泛型数组类型,但只有不同元素类型的数组的数组类型。

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

代码语言:javascript
复制
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反射完成:

代码语言:javascript
复制
val c = Array<Int>::class

println(c.java.isArray) // true
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41207060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档