Data Classes and Sealed Types
Sealed Class Basics
Represent a value that must be one of a small set of known shapes.
Sealed Class Basics
SealedClassBasics.kt
sealed class Message
data class TextMessage(val body: String) : Message()
object EmptyMessage : Message()
fun describe(message: Message): String {
if (message is TextMessage) {
return "text:${message.body.length}"
}
return "empty"
}
fun main() {
val body =
val message: Message
if (body == "") {
message = EmptyMessage
} else {
message = TextMessage(body)
}
val label = describe(message)
println("body=${body.ifEmpty { "none" }}")
println("label=$label")
}
sealed class Message
data class TextMessage(val body: String) : Message()
object EmptyMessage : Message()
fun describe(message: Message): String {
if (message is TextMessage) {
return "text:${message.body.length}"
}
return "empty"
}
fun main() {
val body =
val message: Message
if (body == "") {
message = EmptyMessage
} else {
message = TextMessage(body)
}
val label = describe(message)
println("body=${body.ifEmpty { "none" }}")
println("label=$label")
}
sealed class Message
data class TextMessage(val body: String) : Message()
object EmptyMessage : Message()
fun describe(message: Message): String {
if (message is TextMessage) {
return "text:${message.body.length}"
}
return "empty"
}
fun main() {
val body =
val message: Message
if (body == "") {
message = EmptyMessage
} else {
message = TextMessage(body)
}
val label = describe(message)
println("body=${body.ifEmpty { "none" }}")
println("label=$label")
}
sealed-class
A sealed class keeps its direct subclasses known to the compiler.