首页 > 解决方案 > 通用类型函数名之前的参数

问题描述

Kotlin中函数名<T>类型参数有什么用?

例子:

fun <T> MutableList<T>.swap(index1: Int, index2: Int) {
    val tmp = this[index1] 
    this[index1] = this[index2]
    this[index2] = tmp
}

参考<T>上面的第一个。

我试图查看有关泛型的Kotlin 文档以及Java 泛型,但它们大多只涉及第二个<T>而不是第一个。

标签: javagenericskotlin

解决方案


它用于指示使用泛型而不是T引用某些类型。

看看这个完全有效的例子

fun <String> MutableList<String>.swap(index1: Int, index2: Int)

现在这可以在 anyMutableList<*>而不是 only上调用MutableList<String>。如果你不在关键字<String>后面写fun,kotlin 怎么知道你实际上是在引用泛型而不是kotlin.String

您展示的示例也是如此。<>之后只是引入了一个新的fun泛型参数,否则 kotlin 会抱怨它不知道类型T


推荐阅读