如果类型层次结构不需要共享状态,sealed 接口通常比 sealed 类更受欢迎,因为它们允许实现类以扩展其他类。
示例:
sealed class Result<out T : Any>
class Success<T : Any>(val result: T) : Result<T>()
class Error(val throwable: Throwable) : Result<Nothing>()
在应用快速修复后:
sealed interface Result<out T : Any>
class Success<T : Any>(val result: T) : Result<T>
class Error(val throwable: Throwable) : Result<Nothing>