Kotlin-Snippets
Alle Snippets für Kotlin — copy-&-paste-fertig, erklärt und aus der Praxis.
animateAsState in Jetpack Compose – flüssige Animationen in einer Zeile
Du willst, dass sich Größe, Farbe oder Position weich verändern, statt hart umzuspringen? In Compose brauchst du dafür keinen Animator und keinen State-Maschinen-Zoo – ein animateDpAsState oder animateColorAsState reicht. Ich zeige dir, wie das funktioniert.
when in Kotlin – mehr als ein switch
when ersetzt das switch aus Java, kann aber viel mehr: es liefert einen Wert zurück, prüft Bereiche und Mengen, arbeitet ohne Argument wie eine if-Kette und erzwingt bei sealed-Typen Vollständigkeit. Ich zeige dir alle vier Varianten.
companion object in Kotlin – der saubere Weg zu „statischen" Membern
Kotlin kennt kein `static` wie Java. Für Konstanten, Fabrik-Methoden und Co. gibt es das companion object. Ich zeige, wofür ich es nutze – und den Factory-Trick, mit dem der Konstruktor privat bleibt.
inline und reified in Kotlin – den Typ zur Laufzeit behalten
Generische Typen sind in Kotlin zur Laufzeit normalerweise „weg" (Type Erasure). Mit einer inline-Funktion und reified holst du den Typ zurück – und schreibst so knappe Helfer wie fromJson<User>() ohne Class-Parameter.
rememberCoroutineScope – Coroutinen aus einem Klick in Jetpack Compose starten
LaunchedEffect ist super für Effekte beim Zusammenbau der UI – aber wie startest du eine Coroutine, wenn der Nutzer auf einen Button tippt? Dafür gibt es rememberCoroutineScope. Ich zeige den Unterschied und ein typisches Snackbar-Beispiel.
data class in Kotlin – copy(), Destrukturierung und warum ich sie ständig nutze
Ein `data class` ist mehr als ein Container für Felder. Du bekommst equals(), hashCode(), toString(), copy() und Destrukturierung geschenkt – und arbeitest damit sauber mit unveränderlichen Objekten. Ich zeige dir die Teile, die im Alltag wirklich zählen.
withTimeout – hängende Coroutines nach X Sekunden abbrechen
Ein Netzwerkaufruf, der ewig hängt, blockiert deinen Ladezustand für immer. Mit `withTimeout` gibst du einer Coroutine eine Frist – läuft sie ab, bricht Kotlin sie sauber ab.
runCatching – Fehler in Kotlin funktional statt mit try/catch
Statt jeden Aufruf in try/catch zu wickeln, gibt dir `runCatching` ein Result zurück. Mit `map`, `getOrElse` und `onFailure` liest sich Fehlerbehandlung wie eine saubere Kette.
Flow.debounce – entprellte Live-Suche in Jetpack Compose
Eine Suche, die bei jedem Buchstaben eine Anfrage feuert, überlastet dein Backend. Mit `debounce` auf einem Flow wartest du eine kurze Pause ab und suchst erst dann – ideal fürs Suchfeld.
Enum-Klassen in Kotlin – mit Eigenschaften und Methoden
Enums sind mehr als eine Liste von Konstanten. In Kotlin bekommt jeder Wert eigene Eigenschaften und Methoden – perfekt für Zustände, Kategorien oder Konfiguration.
by lazy in Kotlin – teure Objekte erst beim ersten Zugriff bauen
Manche Objekte kosten Zeit oder Speicher und werden vielleicht nie gebraucht. Mit `by lazy` baust du sie erst, wenn sie das erste Mal wirklich abgefragt werden – threadsicher und in einer Zeile.
Benannte und Standard-Argumente in Kotlin – kein Bedarf mehr für 5 Überladungen
Mit Standardwerten und benannten Argumenten ersetzt Kotlin ganze Stapel überladener Funktionen. Der Aufruf-Code wird lesbarer und du vergisst nie mehr, welcher der vier Boolean-Parameter welcher war.