kotlin - 如何在 kotlin 中将“项目”对象添加到对象 ArrayList
问题描述
我有以下课程
class Item {
var name: String = ""
constructor(n: String) {
name = n
}
}
在我的主要活动中,我宣布了这一点:
var list: ArrayList<Object> = ArrayList<Object>()
当我尝试这样做时
list.add(Item("Hey friend"))
编译器抱怨类型不匹配 (Object -> Item) 这显然是正确的,但由于 Item 也是一个 Object,这不应该没问题吗?我很确定你可以在 Java 中做到这一点,还有什么选择?
我需要列表类型为对象,因为我必须在其中存储不同的东西,所以更改它不是一种选择。
解决方案
Kotlin 中所有类型的超类型是Any
,不是Object
。
您可以改进的其他方面var list: ArrayList<Object> = ArrayList<Object>()
:
- 使它成为一个
val
,因为不变性是首选 - 如果需要显式类型声明,请使用接口
List<Any
- 使用 Kotlin 的集合构建器
listOf()
val items: List<Any> = listOf()`
此外,类定义可以简化为
class Item(val name: String) //could even be a data class
推荐阅读
- python - 在 python 中使用循环单独选择每个 SQL 列并将它们存储在列表中
- android - 如何在 C++ 代码中将 ARMEABI-V7A 汇编器切换到 ARM64?
- wpf - 从 wpf 中的 xaml 动态加载 shell 模块
- javascript - 尽管重新定义,仍删除整个对象
- postgresql - 连接未关闭(HikariCP,Postgres)
- flutter - Flutter - 使用 API Url 搜索
- java - 为什么在 OPC UA 中打开安全通道时从客户端到服务器的问候消息超过 1 条?
- php - 在 codeigniter 中加载支付网关页面
- javascript - Vue.js 访问动态生成(基于 Vuex 数据)表格单元格属性的问题
- wordpress - 获取 Buddypress 的当前用户角色