Kotlin碎片解析——泛型

Kotlin碎片解析————泛型

泛型的out、in、where

kotlin语言作为android生态中的一个重要一环,也承继了部分java的特效,譬如这个——泛型。作为一种编译时期的特性,泛型很大程度把类型转换错误这个问题解决了。
在kotlin语言中,泛型依然适用,同时也保留了java泛型中的上下界特性。

out

out可以看成java泛型中的上界通配符,简单理解就是就是这个泛型之下的子类都使用于当下:

1
2
3
val a: A<View> = A<TextView>()

class A<out T>

需要注意的是,out只能应用于类或者接口,在方法上是无法应用的

in

相应地,in可以看作java泛型中的下界通配符,就是这个类型就是下限了,往上都是可以的

1
2
3
val a: A<TextView> = A<View>()

class A<in T>

与out相同,in不能作用于方法

where

限定多个上界

1
2
3
4
5
class A<T> where T : Button,T : Serializable{}

fun <T> test(t: T) where T : CharSequence, T : TextView {

}

where可作用于类或者函数

##以上