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

定义类

//T 表示不确定性的,定义泛型和使用泛型
open class Box (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){
    println(list.size)
}

in 关键字的使用

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

fun setFruitListByIn(list :ArrayList){
    println(list.size)
}

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

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

泛型的使用

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

你可能感兴趣的:(Kotlin的泛型与in和out关键字使用)