kotlin - Kotlin:返回数组如果 E 是实现接口 I 的枚举类,则从返回类型为 Array 的函数
问题描述
解决方案
在 Kotlin 中,与 Java 不同,Array<T>
在 上是不变的T
,因此,因为E
那是 的子类型I
,Array<E>
并且Array<I>
不是彼此的子类型。请参阅:方差。
鉴于Array<T>
类型还存储项目类型并且不能完全未经检查的强制转换,解决此问题的最佳方法是创建一个单独的数组。
您可以通过手动创建一个数组并用项目填充它来做到这一点,例如在您的示例中(或使用构造函数Array(n) { ... }
),或者使用.toTypedArray()
应用于数组的列表表示(.asList()
):
fun getMoreInterfaces(): Array<I> {
return E.values().asList().toTypedArray()
}
List<I>
但基本上,如果你不是在性能关键的代码中,你可以只使用 a ,这对于 Kotlin 来说比使用数组更惯用,也更简单。
另请参阅:Kotlin 中列表和数组类型之间的区别
推荐阅读
- php - Mysql Query to Select data where, WHERE 子句包含逗号分隔和单独的值
- java - 如何一次性删除HashMap中频率为1的所有记录?
- flutter - 重置下拉菜单颤动的值
- reactjs - 为什么 useEffect 在反应中运行两次,如何防止这个问题?
- discord.py - 我有一个问题,我想在每次两个人使用相同的专用命令时创建一个语音通道,我设法做到了,但是
- angular - 按钮上的 RouterLink 不起作用,但在按钮上起作用
- python - 从具有多个键和值的字典创建数据框
- android - 在 SQLite 数据库中实现 html 标签
- spock - 如何在geb中关闭新创建的webdriver实例
- python - 读取文本文件中的每一行并将其动态保存在变量中