In Java potremmo fare quanto segue
public class TempClass {
List<Integer> myList = null;
void doSomething() {
myList = new ArrayList<>();
myList.add(10);
myList.remove(10);
}
}
Ma se lo riscriviamo a Kotlin direttamente come di seguito
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
myList!!.add(10)
myList!!.remove(10)
}
}
Ho avuto l'errore di non trovare adde removefunzione dalla mia lista
Lavoro intorno al casting su ArrayList, ma è stranamente necessario lanciarlo, mentre in Java non è richiesto il casting. E questo sconfigge lo scopo di avere la classe astratta Elenco
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
(myList!! as ArrayList).add(10)
(myList!! as ArrayList).remove(10)
}
}
C'è un modo per usare List ma non ho bisogno di lanciarlo, come quello che si potrebbe fare in Java?
myList = nulle successivamente su chiamata aggiungere senza!!. Puoi superarlo usando lalateinitparola chiave davanti alla tua proprietà inlateinit var myList: List<Int>questo modo : in questo modo non dovrai inizializzare immediatamente l'elenco, ma garantisci al compilatore che lo inizializzerai prima di utilizzare l'elenco la prima volta. È una soluzione più fluida, ma è una responsabilità per te come sviluppatore.