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.
when ist Kotlins Antwort auf switch – aber deutlich mächtiger. Ich nutze es täglich, und meistens als Ausdruck, der direkt einen Wert liefert.
Als Ausdruck – gibt einen Wert zurück
val note = when (punkte) {
in 90..100 -> "sehr gut"
in 70..89 -> "gut"
in 50..69 -> "okay"
else -> "durchgefallen"
}Zwei Dinge auf einmal: when liefert ein Ergebnis (kein break, kein Zwischenspeichern), und die Zweige prüfen Bereiche mit in 90..100. Als Ausdruck ist else Pflicht, damit immer ein Wert herauskommt.
Mengen und mehrere Werte pro Zweig
val typ = when (zeichen) {
'a', 'e', 'i', 'o', 'u' -> "Vokal"
in '0'..'9' -> "Ziffer"
else -> "sonstiges"
}Ohne Argument – wie eine aufgeräumte if-Kette
Lässt du das Argument weg, prüft jeder Zweig eine beliebige Bedingung:
val status = when {
saldo < 0 -> "im Minus"
saldo == 0 -> "leer"
saldo > 10_000 -> "gut gefüllt"
else -> "normal"
}Das liest sich oft klarer als if / else if / else.
Mit sealed-Typen: Vollständigkeit erzwungen
Der stärkste Trick: Prüfst du einen sealed-Typ, weiß der Compiler alle möglichen Fälle – und verlangt, dass du sie abdeckst. Ergänzt du später eine neue Unterklasse, meckert der Compiler an genau der Stelle:
sealed interface Ladezustand
data object Laden : Ladezustand
data class Fertig(val daten: String) : Ladezustand
data class Fehler(val msg: String) : Ladezustand
fun anzeige(z: Ladezustand) = when (z) {
Laden -> "⏳"
is Fertig -> z.daten
is Fehler -> "⚠️ ${z.msg}"
// kein else nötig – alle Fälle sind abgedeckt
}Das macht Zustands-Logik sicher: Kein Fall wird vergessen, weil der Compiler mitzählt.
Wenn du eine Android-App in Kotlin planst und robusten, gut lesbaren Code willst, baue ich dir das – meld dich über bymw.de.
Quellen
Du brauchst mehr als ein Snippet?
Ich entwickle Android-Apps in Kotlin und moderne Websites für Selbstständige und kleine Unternehmen — von der ersten Idee bis zum Release.
Projekt anfragen →Verwandte Snippets
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.
value class in Kotlin – typsichere IDs ohne Extra-Kosten zur Laufzeit
Ein `String` für die Nutzer-ID, ein `String` für die Bestell-ID – und schon vertauschst du sie irgendwann. Mit `@JvmInline value class` bekommst du echte, unverwechselbare Typen, die zur Laufzeit trotzdem nur der nackte Wert sind. Kein Wrapper-Objekt, keine Bremse.
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.