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 add
e remove
funzione 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 = null
e successivamente su chiamata aggiungere senza!!
. Puoi superarlo usando lalateinit
parola 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.