Kotlin中的泛型函数

时间:2019-03-08 08:55:55

标签: kotlin

在Kotlin中,您可以具有如下通用功能:

fun <T> singletonList(item: T): List<T> {
    // ...
}

我不理解fun关键字后<T>的用途是什么。该函数返回List<T>,那么<T>的意义是什么?

2 个答案:

答案 0 :(得分:3)

要能够创建泛型函数,编译器必须知道您要使用不同的类型。 Kotlin是(如Java或C#)强类型语言。因此,仅将不同类型传递给函数将使编译器发疯。

要告诉编译器某个函数应该接受多种类型,您需要添加“类型参数”

<T>之后的fun是所述“类型参数”的定义。
然后在item参数中使用。

现在,编译器知道在调用item时将指定singletonList(item: T)的类型

只要做

fun singletonList(item: T) : List<T> {[...]}

会使编译器不满意,因为它不知道T
(只要您没有名为T的类)

当您用逗号分隔它们时,您还可以具有多个“类型参数”:

fun <T, U> otherFunction(firstParam: T, secondParam: U): ReturnType

答案 1 :(得分:0)

这是一个通用函数,根据语言的语法要求,需要提供此部分<T>。您可以使用它来进一步指定T

fun <T: Number> singletonList(item: T): List<T> {
    // ...
}

具有多种通用类型也很常见:

fun <T: Number, R: Any> singletonList(item: T): R {
    // ...
}