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
kotlinx.serialization: JSON und data class ohne Handarbeit verbinden
Eine API antwortet mit JSON, deine App will eine data class. Dazwischen steht in vielen Projekten ein handgeschriebener Parser. Mit kotlinx.serialization sind es eine Annotation und eine Zeile – und ein Schalter, ohne den deine App beim nächsten API-Update abstürzt.
AnimatedVisibility in Jetpack Compose – ein- und ausblenden, das nicht springt
Ein Element einfach mit if wegzulassen, poppt hart weg. AnimatedVisibility blendet es weich ein und aus – mit sinnvollen Voreinstellungen und, wenn du willst, deiner eigenen Kombination aus Faden und Bewegung. Ich zeige dir beides.
snapshotFlow in Jetpack Compose – aus Compose-Zustand einen Flow machen
Manchmal willst du auf einen Compose-Zustand reagieren wie auf einen Datenstrom – entprellen, kombinieren, sammeln. Genau das macht snapshotFlow. Ich zeige dir das an der häufigsten Aufgabe: mehr laden, wenn der Nutzer ans Listenende scrollt.