In der Kotlin-Sprache müssen wir standardmäßig jede Variable initialisieren, wenn sie eingeführt wird. Um dies zu vermeiden, kann das Schlüsselwort lateinit
verwendet werden. Das Verweisen auf eine lateinit
Variable, bevor sie initialisiert wurde, führt zu einer Laufzeitausnahme.Warum erlaubt Kotlin nicht, Latetinit mit primitiven Typen zu verwenden?
lateinit
kann jedoch nicht mit den primitiven Typen verwendet werden. Wieso ist es so?
Könnten Sie in der Antwort klären, warum 'laterinit Int' im Runtime nicht mit dem Typ 'Integer' dargestellt werden konnte, der den Wert' null 'enthalten kann, obwohl er nicht initialisiert wurde? – Ilya
@Ilya, weil ein 'Integer' kein' int' ist. Es ist ein Boxed-Typ, und es spielt eine Rolle, wenn das Material nativ oder durch Reflektion eingestellt wird. –
Also, ich denke, Kotlin wickelt die primitiven Typen zum Objekt auf (zum Beispiel Int zu Int). Warum kann Int jedoch nicht null enthalten, weil es ein Objekt ist? Warum können wir einen Parameter auch nicht als NULL-Wert deklarieren und ihn später eingeben? (var x: Int?) – Yao