本文介绍: *>星号投影,表示“不知道关于泛型实参的任何信息”,在修饰容器时,因为不知道是哪个类型,所以并不能向容器中写入任何东西(写入的任何值都可能会违反调用代码的期望)。Any 类似于 Java 中的 Object,它是所有非空类型的超类型。extends T>这样的通配符,也没有父类向子类转换,取而代之的是两个其他的东西:声明处型变(declaration-site variance)与类型投影(type projections)。泛型,即 “参数化类型”,将类型参数化,可以用在类,接口,方法上。
Kotlin的泛型
与Java一样,Kotlin也提供泛型。泛型,即 “参数化类型”,将类型参数化,可以用在类,接口,方法上。可以为类型安全提供保证,消除类型强转的烦恼。声明泛型类的格式如下:
用泛型创建类的实例的时候需要指定类型参数:
定义泛型类型变量,可以完整地写明类型参数。如果定义泛型类的时候指定了泛型类型,则编译器可以自动推断类型参数,定义时就可以省略类型参数。
在调用泛型函数时,如果可以推断参数类型,就可以省略泛型参数。
例如如下示例,泛型函数根据传入的不同类型做相应处理:
对应的输出结果为:
泛型约束
型变
星号投影(star-projection)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。