概念
sealed修饰的类 在kotlin中是密封类 密封类 描述的是 父类和子类的关系
1、密封类和它的子类必须定义在一个文件中,而在kotlin1.0的时候 密封类的子类必须定义在密封类 里面
2、Sealed types cannot be instantiated 密封类是不能被初始化的
如何理解 这个父类和子类的关系呢?
可以这样理解 父类 只是一个组织者(对于子类来说)(除了这个功能它什么也做不了)甚至初使化都做不到,具体可以出面做事情的 是子 类
一个密封类:
sealed class LoadResult<Key:Any,Value:Any> {
data class Error<Key:Any,Value:Any>(val throwable: Throwable):LoadResult<Key,Value>()
data class Page<Key:Any,Value:Any> constructor(
/**
* Loaded data
*/
val data: List<Value>,
/**
* [Key] for previous page if more data can be loaded in that direction, `null`
* otherwise.
*/
val prevKey: Key?,
/**
* [Key] for next page if more data can be loaded in that direction, `null` otherwise.
*/
val nextKey: Key?,
/**
* Optional count of items before the loaded data.
*/
):LoadResult<Key,Value>()
}
使用:
fun main() {
// LoadResult<Int,String>(); //会报错 因为密封类不能被初使化
println("懂了吗")
functionTest()
}
fun functionTest (): LoadResult<Int,String> {
//虽然返回类型是LoadResult但是我们只能返回其子类 因为密封类不能被初使化
var exception:Exception = Exception("")
return LoadResult.Error(exception)
}