Kotlin 形变(协变)
协变 (variance)
out 关键字
public interface StateFlow<out T> : SharedFlow<T> {
/**
* The current value of this state flow.
*/
public val value: T
}
此函数用于读取流的值,不需要异步地 collect
在这里用out声明后,可以向上转型
类可以默认向上转型,但是泛型不行,因为这不是继承关系,而是多个类关系
in 关键字 逆变 (Contravariance)
interface Consumer<in T> {
fun consume(item: T) // T 作为参数进来
}
没什么,父类能被处理,子类也可以
(当然,类这样做是不行的,除非原本就是子类对象,但是是父类类型
要解决这个问题,你可以
1.手动包装
val father = father()
val me = me (father.personality,age = 0 )
2.猫王操作符 + ass
val dog = animal as? Dog ?: Dog(animal.name, 0) //(转型失败会返回一个新的,或者手动指定一个新的

浙公网安备 33010602011771号