kotlin 泛型和委託

1.泛型

泛型允許我們不指定具體類型的情況下進行編程

泛型的兩種定義方式:泛型類,泛型方法

//泛型類
class MyClass<T> {

    fun method(param: T): T {
        return param
    }

}

//泛型方法
fun <T> method(param: T): T {
        return param
    }

具體應用:

fun <T> T.build(block:T.() ->Unit):T{
        block
        return this
    }

//上面就是完成一個類型apply擴展函數的功能

2.類委託和委託屬性

委託基本概念:操作對象自己不會去處理某段邏輯,而是會將工作委託給另一個輔助對象去處理。

類委託如下:

class MySet<T>(val helperSet:HashSet<T>):Set<T>{
    override val size: Int
        get() = helperSet.size
    override fun contains(element: T): Boolean = helperSet.contains(element)

    override fun containsAll(elements: Collection<T>): Boolean  = helperSet.containsAll(elements)

    override fun isEmpty(): Boolean = helperSet.isEmpty()

    override fun iterator(): Iterator<T> = helperSet.iterator()

}

//下面代碼相當於上面代碼,將操作委託給helperSet
class MySet<T>(val helperSet:HashSet<T>):Set<T> by helperSet{

}

委託屬性:將屬性委託給其他的類處理

lazy函數懶加載技術原理:通過by委託屬性然後在調用獲取值的時候才調用getValue

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章