Kotlin文档是否正确?

代码(下面显示)是否正确? 这是来自Kotlin-docs.pdf的第63页,这也是https://kotlinlang.org/docs/reference/generics.html的最后一个代码片段

fun  cloneWhenGreater(list: List, threshold: T): List where T : Comparable, T : Cloneable { return list.filter { it > threshold }.map { it.clone() } } 

按照原样,编译器失败:1. 在kotlin中定义的接口Comparable的预期types参数 2. types推断失败。 期望的types不匹配:推断的types是列表,但期望列表 3. 不能访问“克隆”:它在“克隆”

前两个错误很容易通过将代码更改为以下来解决:

  fun  cloneWhenGreater(list: List, threshold: T): List where T : Comparable, T : Cloneable { return list.filter { it > threshold }.map { it.clone() } } 

我仍然收到以下错误: 无法访问“克隆”:它在“克隆”中受到保护

我正在使用Kotlin 1.1.2-release-IJ2017.1-1

我错过了什么吗? 或者在文档中有错误?

谢谢。

it.clone()返回Any ,你会得到错误铸造List List。 所以,你已经把它改成了List。

您的下一个错误是无法访问克隆:它在克隆中受到保护

这个问题可以通过使用公共方法创建我们自己的Cloneable接口来解决。