En Java, nous pourrions faire ce qui suit
public class TempClass {
List<Integer> myList = null;
void doSomething() {
myList = new ArrayList<>();
myList.add(10);
myList.remove(10);
}
}
Mais si nous le réécrivons directement sur Kotlin comme ci-dessous
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
myList!!.add(10)
myList!!.remove(10)
}
}
J'ai eu l'erreur de ne pas trouver add
et de remove
fonctionner dans ma liste
Je travaille autour de la coulée vers ArrayList, mais c'est étrange de devoir la couler, alors qu'en Java la coulée n'est pas requise. Et cela va à l'encontre du but d'avoir la liste de classe abstraite
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
(myList!! as ArrayList).add(10)
(myList!! as ArrayList).remove(10)
}
}
Existe-t-il un moyen d'utiliser List sans avoir besoin de le diffuser, comme ce qui pourrait être fait en Java?
myList = null
, puis plus tard, appelez sans!!
. Vous pouvez surmonter cela en utilisant lelateinit
mot - clé devant votre propriété comme ceci: delateinit var myList: List<Int>
cette façon, vous n'aurez pas besoin d'initialiser la liste immédiatement, mais vous garantissez au compilateur que vous l'initialiserez avant d'utiliser la liste la première fois. C'est une solution plus fluide, mais elle vous impose une responsabilité en tant que développeur.