首页 > 解决方案 > 如何在 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

解决方案


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

推荐阅读