溫馨提示×

Kotlin泛型怎樣處理復雜類型關系

小樊
96
2024-11-07 11:41:39
欄目: 編程語言

Kotlin 泛型在處理復雜類型關系時非常靈活。它們允許你創建可重用的、類型安全的代碼,同時保持類型推斷的便利性。以下是一些處理復雜類型關系的示例:

  1. 泛型類與泛型函數:
// 泛型類
class Box<T>(val value: T) {
    fun getValue(): T {
        return value
    }
}

// 泛型函數
fun <T> printBoxValue(box: Box<T>, converter: (T) -> String) {
    println(converter(box.getValue()))
}

fun main() {
    val intBox = Box(42)
    val strBox = Box("Hello, Kotlin!")

    printBoxValue(intBox) { it.toString() }
    printBoxValue(strBox) { it.toUpperCase() }
}

在這個例子中,我們定義了一個泛型類 Box 和一個泛型函數 printBoxValue。Box 類可以存儲任何類型的值,而 printBoxValue 函數可以接受任何類型的 Box 并對其進行處理。

  1. 泛型約束:
// 泛型約束
fun <T> printListItems(list: List<T>, predicate: (T) -> Boolean) {
    for (item in list) {
        if (predicate(item)) {
            println(item)
        }
    }
}

data class Person(val name: String, val age: Int)

fun main() {
    val people = listOf(
        Person("Alice", 30),
        Person("Bob", 25),
        Person("Charlie", 35)
    )

    printListItems(people) { it.age >= 30 }
}

在這個例子中,我們定義了一個泛型函數 printListItems,它接受一個類型為 List<T> 的參數,并使用一個謂詞函數 predicate 來過濾列表中的元素。這里我們使用了類型約束,但沒有限制 T 的具體類型。

  1. 泛型類型別名:
// 泛型類型別名
typealias PairOf<A, B> = Pair<A, B>

fun main() {
    val pair = PairOf("Hello", 42)
    println(pair.first) // 輸出 "Hello"
    println(pair.second) // 輸出 42
}

在這個例子中,我們定義了一個泛型類型別名 PairOf,它接受兩個類型參數 AB,并創建一個 Pair<A, B> 類型的別名。這使得我們可以更簡潔地表示類型關系。

總之,Kotlin 泛型在處理復雜類型關系時非常強大。通過使用泛型類、泛型函數、泛型約束和泛型類型別名,你可以編寫可重用、類型安全的代碼,同時保持類型推斷的便利性。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女