在Android開(kāi)發(fā)中,sealed
類(lèi)是一種特殊的類(lèi),它限制了子類(lèi)的繼承能力
sealed
類(lèi)。這個(gè)類(lèi)可以包含抽象方法、屬性或者其他成員。sealed class Operation {
abstract fun execute(): Int
}
sealed
類(lèi)創(chuàng)建子類(lèi)。這些子類(lèi)必須位于與 sealed
類(lèi)相同的文件中,并且它們必須是 final
的(在Kotlin中默認(rèn)為final
)。class AddOperation(private val value1: Int, private val value2: Int) : Operation() {
override fun execute(): Int = value1 + value2
}
class SubtractOperation(private val value1: Int, private val value2: Int) : Operation() {
override fun execute(): Int = value1 - value2
}
sealed
類(lèi)及其子類(lèi)。由于所有子類(lèi)都在同一個(gè)文件中,因此編譯器可以確保不會(huì)有其他子類(lèi)。fun main() {
val operation: Operation = AddOperation(5, 3)
println("Result: ${operation.execute()}") // 輸出 "Result: 8"
}
sealed
類(lèi)的實(shí)例時(shí),可以使用 when
表達(dá)式進(jìn)行模式匹配。由于 sealed
類(lèi)的子類(lèi)數(shù)量是有限的,因此你可以確保所有情況都被覆蓋。fun handleOperation(operation: Operation): Int {
return when (operation) {
is AddOperation -> operation.value1 + operation.value2
is SubtractOperation -> operation.value1 - operation.value2
}
}
通過(guò)使用 sealed
類(lèi),你可以更好地控制類(lèi)的繼承結(jié)構(gòu),并確保代碼的健壯性和可維護(hù)性。在Android開(kāi)發(fā)中,你可以將 sealed
類(lèi)用于狀態(tài)管理、事件處理等場(chǎng)景。