相关疑难解决方法(0)

Kotlin:通过强制转换修改(不可变)列表,这是合法的吗?

我们知道Kotlin中的List是不可变的,即你不能像下面那样添加和删除.

class TempClass {
    var myList: List<Int>? = null
    fun doSomething() {
        myList = ArrayList<Int>()
        myList!!.add(10)
        myList!!.remove(10)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如果我们将它转​​换为ArrayList,如下所示,添加和删除工作.

class TempClass {
    var myList: List<Int>? = null
    fun doSomething() {
        myList = ArrayList<Int>()
        (myList!! as ArrayList).add(10)
        (myList!! as ArrayList).remove(10)
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是觉得这很奇怪,因为myList实际上是一个List,它假设是不可变的.铸造它,允许它被改变.

上面做了什么(强制转换为Array并修改内容)是合法的,还是语言需要改进才能禁止?

collections kotlin

6
推荐指数
1
解决办法
742
查看次数

标签 统计

collections ×1

kotlin ×1