sealed class Result { data class Success(val data: Any) : Result() data class Error(val message: String) : Result() object Loading : Result() } 在上面的示例中,我们定义了一个名为Result有三个子类:Success,Error,和Loading。每个子类表示一个操作的不同结果。当您希望限制类型的可能变化并确保所有...
If we want a common function for all subtypes like in the enum example, we can have that in sealed class by defining it in the sealed class itself and then overriding it in the subtypes: sealed class DeliveryStatus { abstract fun cancelOrder() } The advantage of having a common function...
Additionally, sealed interfaces enable more flexible restricted class hierarchies because a class can directly inherit more than one sealed interface. 比如Flappy Bird 游戏的过程中会产生很多 Action 来触发数据的计算以推动 UI 刷新以及游戏的进程,Action 可以用 enum class 来管理。 其中有些 Action 是关联的...
// TestSealed.ktsealedclassGameAction(times:Int){// Inner of Sealed ClassobjectStart:GameAction(1)dataclassAutoTick(valtime:Int):GameAction(2)classExit:GameAction(3)} 除了在 sealed class 内嵌套子类外,还可以在外部扩展子类: // TestSealed.ktsealedclassGameAction(times:Int){...}// Outer of ...
让我们通过对比的例子来讨论枚举和密封类在各个方面的区别,这将帮助您根据您的用例选择一个。
sealed class 以及 1.5 里新增的 sealed interface 可谓是 Kotlin 语言的一大特色,其在类型判断、扩展和实现的限制场景里非常好用。 本文将从特点、场景和原理等角度综合分析 sealed 语法。 Sealed Class Sealed Interface Sealed Class & Interface VS Enum ...
封闭类在语法上使用关键字:sealed进行声明 封闭类的构造函数的权限是protected和private 封闭类和接口的直接子类必须定义在同一个包之内. 可以是顶级位置, 也可以嵌套在任意多的其他有名称的类, 有名称的接口, 或有名称的对象之内. 子类可以设置为任意的可见度, 只要它们符合 Kotlin 中通常的类继承规则. ...
How can I do this with a Kotlin's sealed classes? I tried sorting by the class names but that's not by enum position. There must be some way to sort by enum position: sealed class GoodCountries { class Brazil : GoodCountries() {} class USA : GoodCountries() {} cl...
Kotlin 语法:Interface 和 委托以及 sealed class 本文适合有 java 基础的同学,有学习 kotlin 的同学欢迎一起来,有问题可在文末留言。 场景描述 现在有一个项目需要外包出去,于是就找了中间人,负责将项目外包并按期交付,而这个中间人就获得了第一个项目报价,而中间人又不会写代码,于是,他去找了程序员,给出了...
/** * 密闭类,kotlin中更强大的enum,Kotlin中一般使用密闭类,很少使用枚举 * 因为密闭类有更强大的扩展性 */ sealed class SealedMode { object A : SealedMode() object B : SealedMode() object C : SealedMode() class E(var age: Int) : SealedMode() { // 比如我们可以自这个类的包体中做一些...