在 Java 中,我们可以执行以下操作

public class TempClass {
    List<Integer> myList = null;
    void doSomething() {
        myList = new ArrayList<>();
        myList.add(10);
        myList.remove(10);
    }
}

但是如果我们直接将其重写为 Kotlin 如下
class TempClass {
    var myList: List<Int>? = null
    fun doSomething() {
        myList = ArrayList<Int>()
        myList!!.add(10)
        myList!!.remove(10)
    }
}

我从我的列表中找不到 addremove 函数的错误

我解决了将它转换为 ArrayList 的工作,但是需要转换它很奇怪,而在 Java 中不需要转换。这违背了拥有抽象类 List 的目的
class TempClass {
    var myList: List<Int>? = null
    fun doSomething() {
        myList = ArrayList<Int>()
        (myList!! as ArrayList).add(10)
        (myList!! as ArrayList).remove(10)
    }
}

有没有办法让我使用 List 但不需要强制转换它,就像在 Java 中可以做的那样?

最佳答案



https://kotlinlang.org/docs/reference/collections.html

您需要使用 MutableList 列表。

class TempClass {
    var myList: MutableList<Int> = mutableListOf<Int>()
    fun doSomething() {
        // myList = ArrayList<Int>() // initializer is redundant
        myList.add(10)
        myList.remove(10)
    }
}
MutableList<Int> = arrayListOf() 也应该有效。

关于collections - Kotlin 的列表缺少 "add"、 "remove"、 map 缺少 "put"等?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37913252/

10-14 09:48