Kotlin: 一步一步學(xué)(六) -- 泛型和委托

上一篇:Kotlin: 一步一步學(xué)(五) -- 高階函數(shù)

泛型

定義:在一般的編程模式下,我們需要給任何一個變量指定一個具體的類型,而泛型允許我們在不指定具體類型的情況下進行編程,這樣編寫出來的代碼將會擁有更好的擴展性。

泛型有兩種定義方式:①泛型類;②泛型方法。定義泛型的方法非常簡單,使用的語法都是<T>。

泛型類

現(xiàn)在我們來定義一個泛型類,代碼如下所示:

class MyClass<T> {  //在class后面添加<T>
    fun method(param: T): T {
        return param
    }
}

//調(diào)用方式
val myClass = MyClass<Int>()
val result = myClass.method(123)  //結(jié)果為123

此時的MyClass類就是一個泛型,MyClass中的方法運行使用T類型的參數(shù)和返回值。
這里我們將MyClass類的泛型指定成Int類型,于是method()方法就可以接收一個Int類型的參數(shù),并且它的返回值也變成了Int類型。

泛型方法

下面我們來定義一個泛型方法,代碼如下所示:

class MyClass{
    fun <T>method(param: T): T {
        return param
    }
}

//調(diào)用方式
val myClass = MyClass()
val result = myClass.method<Int>(123)  //結(jié)果為123, method后面的泛型定義<Int>可以省略。

你看,現(xiàn)在是在調(diào)用method()方法的時候才指定泛型類型了。另外,Kotlin有非常出色的類型推導(dǎo)機制,它能根據(jù)你傳入的參數(shù),自動推導(dǎo)出泛型的類型。故method后面的泛型指定<Int>可以省略不寫。

委托

定義:委托是一種設(shè)計模式,操作對象自己不會去處理某段邏輯,而是把工作委托給另外一個輔助對象去處理。

Kotlin對委托功能有很好的支持,并且把委托功能分成了兩種:類委托和屬性委托。Kotlin中委托使用的關(guān)鍵字是by。

類委托

類委托的核心思想在于將一個類的具體實現(xiàn)委托給另外一個類去完成。
示例代碼如下所示:

/**
 * 模擬實現(xiàn)一個Set實現(xiàn)類。
 */
class MySet<T>(private val helperSet: HashSet<T>) : Set<T> by helperSet {
    
    fun add() = println("Hello world")

    override fun isEmpty(): Boolean {
        return false
    }
}

屬性委托

屬性委托的核心思想是將一個屬性的具體實現(xiàn)委托給另一個類去完成。

下一篇:[Kotlin: 一步一步學(xué)(七) -- 協(xié)程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容