泛型:类型参数不在其范围内

时间:2019-08-08 01:06:46

标签: eclipse generics kotlin

您知道为什么以下代码无法编译吗?

fun <T : Comparable<T>> naturalSort(list: List<T>): List<T> {
  val natComparator = naturalOrder<T>() // compiler error here

  return list.sortedWith(natComparator)
}

第二行导致编译器错误:

  

Type参数不在其范围内:应该是“ Comparable”的子类型

更新: 它在https://play.kotlinlang.org/中对我有效,但在Eclipse中以及使用项目的Gradle构建脚本(从Eclipse)构建项目时,该方法均失败。

这是我的Gradle构建环境的样子:

https://pastebin.com/0GDUWy2C

1 个答案:

答案 0 :(得分:0)

已解决。该问题是由于由于在实际代码中导入语句而使用了错误的Comparable接口引起的()(导入语句没有问题,不确定是否使用java.lang.Comparable来代替) Kotlin(可比)。在代码中指定应使用kotlin.Comparable可以解决此问题:

fun <T : kotlin.Comparable<T>> naturalSort(list: List<T>): List<T> { val natComparator = naturalOrder<T>() // no error return list.sortedWith(natComparator) }

感谢所有回复的人。