Kotlin 入门总结 5(泛型)

127 阅读1分钟
1.
//类型 泛型的声明
sealed class List<T>
// 方法声明泛型
fun <T> maxOf(a:T,b:T):T {

}

2.
// 泛型的约束 T需要实现Comparable接口,对T进行约束
fun <T:Comparable<T>> maxOf2(a:T,b:T):T{
    return if (a>b) a else b
}

fun <T> maxOf3 (a:T,b:T) where T:Comparable<T>{
}

3.
//多个约束 T既需要比较大小,也需要是个函数
fun <T> callMax(a:T,b:T) where T:Comparable<T>,T:()->Unit{
    return if (a>b) a() else b()
}


4.
// 多个泛型参数 T需要比较大小,返回值是个函数->函数的返回值是R R的返回值是Number
fun <T,R> callMax2(a:T,b:T):R where T:Comparable<T>,T:()->R,R:Number{
    return if (a>b) a() else b()
}


5.
//泛型的型变 协变(out)->函数的返回值类型为泛型参数、逆变(in)->函数的参数类型为泛型参数

interface Book
interface EduBook:Book
class BookStore<out T:Book>{
    fun getbook():T{

    }
}

open class  Waster
class DryWaster:Waster()
class Sustbin<in T:Waster>{
    fun put(t:T){
    }
}