美文网首页
Kotlin之泛型 变型

Kotlin之泛型 变型

作者: 钦_79f7 | 来源:发表于2019-12-20 17:04 被阅读0次

    协变

    如果A是B的子类型,那么List<A> 就是 List<B> 的子类型。这样的类或者接口被称为协变的

    out

    类型参数 T 上的关键字 out 有两层含义:

    • 子类型化会被保留(Producer<Cat> 是 Producer<Animal> 的子类型)
    • T 只能用在 out 位置

    ==注意==:

    • 构造方法的参数既不在 in 位置,也不在 out 位置。即使类型参数声明成了 out,仍然可以在构造方法参数的声明中使用它。
    • 如果把类型的实例当成一个更泛化的类型的实例使用,变型会防止该实例被误用:不能调用存在潜在危险的方法。构造方法不是那种在实例创建之后还能调用的方法,因此它不会存在潜在的危险。
    • 位置规则值覆盖了类外部可见的(public、protected 和 internal)API。私有方法的参数既不在in 位置也不在 out 位置。变型规则只会防止 外部使用者对类的误用但不会对类自己的实现起作用。

    相关文章

      网友评论

          本文标题:Kotlin之泛型 变型

          本文链接:https://www.haomeiwen.com/subject/ksuinctx.html