kotlin 泛型中类型投射

本文深入探讨了Kotlin中泛型投射的概念,包括out和in关键字的使用,以及如何利用这些特性进行类型安全的数组复制。通过具体代码示例,展示了如何避免编译错误,实现从特定类型数组到更通用类型数组的安全转换。
fun main(arg: Array<String>) {
    var ints:Array<Int> = arrayOf(1, 2, 3)
    val any =Array<Any>(3){}
    copy(ints,any)//编译错误,因为Array<Int>不是Array<Any>的子类型

}



fun copy(from :Array<Any>,to:Array<Any>){
    assert(from.size==to.size)
    for (i in from.indices){
        to[i]=from[i]
    }
}

fun main(arg: Array<String>) {
    var ints:Array<Int> = arrayOf(1, 2, 3)
    val any =Array<Any>(3){}
    copy(ints,any)//编译通过

}



fun copy(from :Array< out Any>,to:Array<Any>){
    assert(from.size==to.size)
    for (i in from.indices){
        to[i]=from[i]
    }
}

上面是有out类型投射,我们声明的含义:from 不是一个单纯的数组,而是一个被限制投射的数组,也可以使用in关键字来投射一个类型

 

转载于:https://www.cnblogs.com/loaderman/p/10141702.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值