日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

kotlin sealed 中_7.8 Kotlin Sealed类

發布時間:2024/10/14 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kotlin sealed 中_7.8 Kotlin Sealed类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

密封(Sealed)類是一個限制類層次結構的類。

可以在類名之前使用sealed關鍵字將類聲明為密封類。

它用于表示受限制的類層次結構。

當對象具有來自有限集的類型之一,但不能具有任何其他類型時,使用密封類。

密封類的構造函數在默認情況下是私有的,它也不能允許聲明為非私有。

密封類聲明

在類名之前使用sealed關鍵字將類聲明為密封類。

sealed class MyColor {

}

密封類的子類必須在密封類的同一文件中聲明。

sealed class MyColor {

class Yellow : MyColor()

class Red : MyColor()

class Black : MyColor()

}

密封類僅在編譯時限制類型集來確保類型安全的重要性。

sealed class MyColor {

class Yellow : MyColor()

class Red : MyColor()

class Black : MyColor()

}

sealed class ColorA {

class White : MyColor() //不起作用,因為密封類在另一個范圍內定義。

}

sealed class ColorB : MyColor() {

}

密封類隱式是一個無法實例化的抽象類。

sealed class MyColor()

fun main(args: Array) {

val color = MyColor() //密封類型無法實例化

}

密封類的必要性

讓我們首先了解密封類的必要性,下面的例子中,我們有一個類MyColor,它有三個子類Yellow、Red和Black。evals()方法中的when表達式必須使用else分支,否則我們會得到一個編譯錯誤。

示例1:

open class MyColor {

class Yellow : MyColor()

class Red : MyColor()

class Black : MyColor()

}

fun evals(color: MyColor) = when (color) {

is MyColor.Yellow -> println("yellow")

is MyColor.Red -> println("red")

is MyColor.Black -> println("black")

else -> println("other") //必須包含else分支,否則編譯錯誤

}

fun main(args: Array) {

evals(MyColor.Black())

}

Kotlin 密封類示例

密封類通常與表達時一起使用。 由于密封類的子類將自身類型作為一種情況。 因此,密封類中的when表達式涵蓋所有情況,從而避免使用else子句。

sealed class MyColor {

class Yellow : MyColor()

class Red : MyColor()

class Black : MyColor()

}

fun evals(color: MyColor) = when (color) {

is MyColor.Yellow -> println("yellow")

is MyColor.Red -> println("red")

is MyColor.Black -> println("black")

}

fun main(args: Array) {

evals(MyColor.Black())

}

結果:black

總結

以上是生活随笔為你收集整理的kotlin sealed 中_7.8 Kotlin Sealed类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。