在 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)
}
}
我从我的列表中找不到
add
和 remove
函数的错误我解决了将它转换为 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/