
- Kotlin 教程
- Kotlin - 首頁
- Kotlin - 概述
- Kotlin - 環境設定
- Kotlin - 架構
- Kotlin - 基本語法
- Kotlin - 註釋
- Kotlin - 關鍵字
- Kotlin - 變數
- Kotlin - 資料型別
- Kotlin - 運算子
- Kotlin - 布林值
- Kotlin - 字串
- Kotlin - 陣列
- Kotlin - 範圍
- Kotlin - 函式
- Kotlin 控制流
- Kotlin - 控制流
- Kotlin - if...Else 表示式
- Kotlin - When 表示式
- Kotlin - For 迴圈
- Kotlin - While 迴圈
- Kotlin - Break 和 Continue
- Kotlin 集合
- Kotlin - 集合
- Kotlin - 列表
- Kotlin - 集合
- Kotlin - 對映
- Kotlin 物件和類
- Kotlin - 類和物件
- Kotlin - 建構函式
- Kotlin - 繼承
- Kotlin - 抽象類
- Kotlin - 介面
- Kotlin - 可見性控制
- Kotlin - 擴充套件
- Kotlin - 資料類
- Kotlin - 密封類
- Kotlin - 泛型
- Kotlin - 委託
- Kotlin - 解構宣告
- Kotlin - 異常處理
- Kotlin 有用資源
- Kotlin - 快速指南
- Kotlin - 有用資源
- Kotlin - 討論
Kotlin - 泛型
像 Java 一樣,Kotlin 提供了更高階的變數型別,稱為泛型。在本章中,我們將學習 Kotlin 如何實現泛型,以及作為開發人員我們如何使用泛型庫中提供的功能。在實現方面,泛型與 Java 非常相似,但 Kotlin 開發人員引入了兩個新關鍵字“out”和“in”,使 Kotlin 程式碼更具可讀性,並方便開發人員使用。
在 Kotlin 中,類和型別是完全不同的概念。根據示例,List 是 Kotlin 中的一個類,而 List<String> 是 Kotlin 中的一個型別。以下示例描述了 Kotlin 中泛型的實現方式。
fun main(args: Array<String>) { val integer: Int = 1 val number: Number = integer print(number) }
在上面的程式碼中,我們聲明瞭一個“整數”,然後將其賦值給一個數字變數。這是可能的,因為“Int”是 Number 類的子類,因此型別轉換會在執行時自動發生,並輸出“1”。
讓我們進一步瞭解 Kotlin 中的泛型。當我們不確定將在應用程式中使用的資料型別時,最好使用泛型資料型別。通常,Kotlin 中的泛型由<T>定義,其中“T”代表模板,可以由 Kotlin 編譯器動態確定。在以下示例中,我們將看到如何在 Kotlin 程式語言中使用泛型資料型別。
fun main(args: Array<String>) { var objet = genericsExample<String>("JAVA") var objet1 = genericsExample<Int>(10) } class genericsExample<T>(input:T) { init { println("I am getting called with the value "+input) } }
在上面的程式碼片段中,我們建立了一個具有泛型返回型別的類,表示為<T>。檢視 main 方法,我們在執行時透過提供值型別動態定義了它的值,同時建立此類的物件。這就是 Kotlin 編譯器解釋泛型的方式。當我們在我們的編碼環境中執行此程式碼時,將在瀏覽器中獲得以下輸出。
I am getting called with the value JAVA I am getting called with the value 10
當我們想要將泛型型別分配給其任何超型別時,我們需要使用“out”關鍵字,而當我們想要將泛型型別分配給其任何子型別時,我們需要使用“in”關鍵字。在以下示例中,我們將使用“out”關鍵字。類似地,您可以嘗試使用“in”關鍵字。
fun main(args: Array<String>) { var objet1 = genericsExample<Int>(10) var object2 = genericsExample<Double>(10.00) println(objet1) println(object2) } class genericsExample<out T>(input:T) { init { println("I am getting called with the value "+input) } }
上述程式碼將在瀏覽器中產生以下輸出。
I am getting called with the value 10 I am getting called with the value 10.0 genericsExample@28d93b30 genericsExample@1b6d3586