在 Kotlin 中,当你看到 Class<out Activity> 或其他泛型类型中带有 out 关键字时,这就涉及到了 Kotlin 的一个重要特性:型变(Variance)。它解决了泛型在继承关系中子类型和父类型之间的赋值兼容性问题。
什么是型变(Variance)?
简单来说,型变定义了当类型A是类型B的子类型时,Generic<A>和Generic<B>之间是否存在子类型关系。
Java 默认的泛型是不变(Invariance)的,这意味着即使String是Object的子类型,List** 也不是**List