6.5 泛型函数

类可以有类型参数。函数也有。类型参数要放在函数名称之前:

  1. fun <T> singletonList(item: T): List<T> {}
  2. fun <T> T.basicToString() : String { // 扩展函数
  3. }

要调用泛型函数,在函数名后指定类型参数即可:

  1. val l = singletonList<Int>(1)

泛型函数与其所在的类是否是泛型没有关系。泛型函数独立于其所在的类。我们应该尽量使用泛型方法,也就是说如果使用泛型方法可以取代将整个类泛型化,那么就应该只使用泛型方法,因为它可以使事情更明白。