Careeroza
when Expression
Replacing switch
Example
when compares a value against branches. No break is needed, and several values can share a branch.
fun main() {
val day = 6
when (day) {
1 -> println("Monday")
2 -> println("Tuesday")
3, 4, 5 -> println("Midweek")
6, 7 -> println("Weekend")
else -> println("Invalid day")
}
}Output
Weekend
when as an Expression
Example
Like if, when can return a value. Then it must be exhaustive (usually an else branch).
fun main() {
val statusCode = 404
val message = when (statusCode) {
200 -> "OK"
201 -> "Created"
401 -> "Please log in again"
404 -> "Not found"
500 -> "Server error, try later"
else -> "Unknown status"
}
println("$statusCode: $message")
}Output
404: Not found
when vs Java switch
| Java switch (classic) | Kotlin when | |
|---|---|---|
| Fall-through | yes, needs break | no |
| Returns a value | only switch expressions (Java 14+) | yes |
Ranges in 1..10 | no | yes |
Type checks is String | Java 21 patterns | yes |
| Arbitrary conditions | no | yes (when without argument) |