Come sappiamo, l'Elenco in Kotlin è immutabile, cioè non è possibile aggiungere e rimuovere come di seguito.Kotlin: modificare l'elenco (immutabile) tramite cast, è legittimo?
Ma se lo trasmettiamo a ArrayList come sotto, l'aggiunta e la rimozione funziona.
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
(myList!! as ArrayList).add(10)
(myList!! as ArrayList).remove(10)
}
}
Ho appena pensato che questo è strano, come myList è in realtà un elenco, che è supponiamo di essere immutabili. E lanciandolo, permettigli di essere alterato.
È quello che viene fatto sopra (trasmettere a Array e modificare il contenuto) legittimo o il linguaggio deve migliorare per non consentire tale?
Possibile duplicato di [Kotlin e collezioni immutabili?] (Http://stackoverflow.com/questions/33727657/kotlin-and-immutable-collections) –
Il link offerto spiega che l'elenco non è immutabile, ma leggibile. Ma poi "leggibile" non è davvero così "utile" dato che, potrebbe essere ancora lanciato per essere cambiato.Idealmente, 'leggibile' non dovrebbe essere castabile a qualcosa 'scrivibile' – Elye
È sufficiente trasmettere a 'MutableList', un super tipo di' ArrayList' – voddan