kotlin - 如果类型参数由另一个类型参数限定,则类型参数不能有任何其他界限:这是什么意思以及如何解决它?
问题描述
MyList<T>
我在 kotlin中实现自定义列表类。在那,我想添加insertSorted
一个函数,它将一个新元素按排序顺序插入到列表中。为此,T
必须实现比较器。所以该函数的原型将是fun <C> insertSorted(ele: C) where C:T, C:Comparable<T>
但是这给了我如果类型参数受到另一个类型参数错误的限制,它就不能有任何其他界限。我不明白这个错误是什么。另外,这个问题对我帮助不大。
PS:我传递给该函数的类型声明为class MyClass : Comparator<MyClass>
. 所以where C:T, C:Comparator<T>
我猜这个界限是有效的。
解决方案
有关错误的含义,请参阅此问题:
如果 Kotlin 中的类型参数受另一个类型参数的限制,为什么它不能有任何其他范围?
但是,如果您的自定义列表包含类型的元素T
并且您想要比较它们,那么T
应该实现Comparable<T>
.
所以这应该是你所需要的:
class MyList<T: Comparable<T>> {
fun insertSorted(ele: T) {
}
}
推荐阅读
- entity-framework - 将 c++/cli 实体映射到表(实体框架)
- php - 我的 API 请求无缘无故地使用了 25 个请求
- java - getAllEntriesByKey 导致错误:Vector 中的对象类型未知或不受支持
- javascript - ES6 合并两个 FileList,更新一个 input.files 元素
- .htaccess - URL 路由/重写
- ios - 使用新属性扩展 UIView
- swift - 在 Swift 中将 BOM 写入流式传输
- php - 检查谁在服务器中进行了更改
- ios - 在 Xcode 10 升级后运行 createIPA 任务
- javascript - 每次我包含一个 scss 文件时,使用 Typescript、Webpack 4 和 React,样式名称在 className 中未定义