Android Kotlin泛型类型,类型推断失败
Kotlin的参考文件说这个例子是有效的Android Kotlin泛型类型,类型推断失败,android,android-studio,kotlin,android-studio-3.0,Android,Android Studio,Kotlin,Android Studio 3.0,Kotlin的参考文件说这个例子是有效的 fun cloneWhenGreater(列表:列表,阈值:T):列表 式中T:可比, T:可克隆{ return list.filter{it>threshold}.map{it.clone()} } 但在Android studio 3.0中,它在it.clone()下显示了一条细细的红线。错误消息是: 类型推断失败。预期类型不匹配必需:列表 找到:列表 为什么这个例子不能被编译 问题在于使用clone(),正如编译器抱怨的那样,它受到保护。这里
fun cloneWhenGreater(列表:列表,阈值:T):列表
式中T:可比,
T:可克隆{
return list.filter{it>threshold}.map{it.clone()}
}
但在Android studio 3.0中,它在it.clone()下显示了一条细细的红线。错误消息是:
类型推断失败。预期类型不匹配
必需:列表
找到:列表
为什么这个例子不能被编译 问题在于使用clone()
,正如编译器抱怨的那样,它受到保护。这里已经讨论了这个问题:
fun <T> cloneWhenGreater(list: List<T>, threshold: T): List<T>
where T : Comparable<T>,
T : Cloneable {
return list.filter { it > threshold }.map { it.clone() }
}