Kotlin的泛型与in和out关键字使用

2019-12-06  本文已影响0人  爱学习的蹭蹭

定义类

//T 表示不确定性的,定义泛型和使用泛型
open class Box<T> (var thing :T)
//抽象Thing对象
abstract class Thing
//抽象Fruit 对象
abstract class Fruit :Thing()
//抽象Apple 对象
class Apple : Fruit()
//抽象Orange 对象
class Orange : Fruit()

out关键字的使用

加上这个out关键字表示接收当前类型或它的子类,相当于Java的 ArrayList< ? extends Fruit>

fun setFruitListByOut(list :ArrayList<out Fruit>){
    println(list.size)
}

in 关键字的使用

加上这个in关键字表示接收当前类型或它的子类,相当于Java的 ArrayList< ? super Fruit>

fun setFruitListByIn(list :ArrayList<in Fruit>){
    println(list.size)
}

接收任何类型,相当于Java的 ArrayList<?>

fun  setFruitListByAny(list :ArrayList<*>){
    println(list.size)
}

泛型的使用

//泛型的使用
fun <T> parseType (thing : T){
    when(thing){
        is Int->println("当前类型是Int型")
        is String->println("当前类型是String型")
        else ->println("unkonwn")
    }
}
上一篇下一篇

猜你喜欢

热点阅读