Kotlin-Code verstehen
Selbst als erfahrener Java-Entwickler war es für mich anfangs nicht einfach, die vielen Kotlin-Beispiele und existierenden Kotlin-Code zu lesen und zu verstehen - insbesondere solcher, der gleich von mehreren der vielen Kotlin-Features gleichzeitig gebraucht machte.
Doch wenn man sich schwertut, selbst kürzere Code-Beispiele einer neuen Sprache zu verstehen, obwohl man zum Beispiel mit Java schon jahrelang professionell arbeitet, stellt das eine große Hürde und Motivations-Bremse dar, sich in die neue Syntax einzuarbeiten.
(Wer schon mal versucht hat, das Zehnfingersystem zu erlernen, obwohl es schon etliche Jahre auch mit nur vieren gut geklappt hat, weiß, was ich meine ...)
Um diese Hürde schnellstmöglich aus dem Weg zu räumen, möchte ich mit dir direkt "den Sprung ins kalte Wasser" wagen und im Folgenden ein Kotlin-Beispiel ausführlich durchgehen. Danach, so hoffe ich, hast du genug Rüstzeug, dich von Kotlin nicht (mehr länger) abschrecken zu lassen, sondern voll einzusteigen.
Obwohl es sich dabei um relativ simplen Kotlin-Code handelt, ist er selbst für Java-KennerInnen nicht unbedingt sofort durchschaubar, vor allem weil er gleich mehrere Kotlin-Sprachkonstrukte verwendet und kombiniert:
val strings = listOf("Hello", "World", "!") val lengths = strings.map { it.length }
Doch gleich wirst du genau verstehen, was dieser Code macht und - davon bin ich überzeugt - begeistert sein, was Kotlin dir im Gegensatz zu Java alles erlaubt, ermöglicht und abnimmt.
Variablen deklarieren
Fangen wir mit der allerersten Zeile an. Diese ist eine Deklaration der Variablen strings
, mit gleichzeitiger Initialisierung.
Sofort fällt das, in Java (noch) unbekannte, Schlüsselwort val
auf. Auch fehlt "irgendwie" die Angabe des Typs der Variablen. Was hat es damit auf sich, wo Kotlin doch eine streng typisierte Sprache ist?
Um diesen Fragen auf die Spur zu kommen, betrachten wir zunächst ein ähnliches Beispiel im Vergleich zu Java:
Hier ist eine Deklaration der Variablen i
vom Typ int
in Java, die direkt mit dem Wert 42
initialisiert wird:
int i = 42;
In Kotlin sieht dieselbe Variablen-Deklaration folgendermaßen aus:
var i : Int = 42
Das wirkt gegenüber Java "umgedreht".
Variablen-Deklarationen in Kotlin beginnen nicht mit dem Typ der Variablen, sondern stets mit dem Keyword var
oder val
(der Unterschied zwischen diesen beiden wird gleich erläutert.)
Darauf folgt der Name der Variablen.
Um schließlich den Typ anzugeben, wird dieser gleich nach einem :
notiert. (Das große 'I'{.inline} in Int
ist übrigens kein Schreibfehler, sondern liegt daran, dass Kotlin keine Primitive kennt - doch dazu später mehr.)
Wenn man möchte, kann man, ganz wie in Java, die Variable dann auch gleich mit einer Zuweisung initialisieren, so wie im Beispiel auch.
var
oder val
?
Worin besteht nun der Unterschied darin, eine Variable mit var
oder val
zu deklarieren?
Im Grunde ist es derselbe wie der zwischen
int i = 42;
und
final int i = 42;
in Java.
Variablen, die mit var
(variabel) deklariert werden, kann später ein anderer Wert zugewiesen werden - bei solchen mit val
(value) ist das verboten.
Dabei gilt das gleiche wie auch in Java: Nur die Variable selbst ist gegebenenfalls unveränderlich. Ist das Objekt, auf das die Referenz verweist, veränderlich, kann dieses über entsprechende Methoden/Properties getan werden - egal ob val
oder var
.
Type Inference
Bei genauer Betrac...