In Java könnten wir Folgendes tun
public class TempClass {
List<Integer> myList = null;
void doSomething() {
myList = new ArrayList<>();
myList.add(10);
myList.remove(10);
}
}
Aber wenn wir es wie unten beschrieben direkt in Kotlin umschreiben
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
myList!!.add(10)
myList!!.remove(10)
}
}
Ich habe den Fehler erhalten, dass meine Liste nicht gefunden wurde add
und nicht remove
funktioniert
Ich arbeite daran, es in ArrayList umzuwandeln, aber das ist seltsam, wenn man es umwandeln muss, während in Java kein Casting erforderlich ist. Und das macht den Zweck der abstrakten Klassenliste zunichte
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
(myList!! as ArrayList).add(10)
(myList!! as ArrayList).remove(10)
}
}
Gibt es eine Möglichkeit für mich, List zu verwenden, ohne sie umwandeln zu müssen, wie dies in Java möglich ist?
myList = null
und später beim Hinzufügen ohne hinzufügen!!
. Sie können dies überwinden, indem Sie daslateinit
Schlüsselwort vor Ihrer Eigenschaft folgendermaßen verwenden: Auflateinit var myList: List<Int>
diese Weise müssen Sie die Liste nicht sofort initialisieren, sondern garantieren dem Compiler, dass Sie sie initialisieren, bevor Sie die Liste zum ersten Mal verwenden. Es ist eine reibungslosere Lösung, aber Sie als Entwickler sind dafür verantwortlich.