首页 > 解决方案 > 如果类型参数由另一个类型参数限定,则类型参数不能有任何其他界限:这是什么意思以及如何解决它?

问题描述

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>我猜这个界限是有效的。

标签: kotlingenericstype-bounds

解决方案


有关错误的含义,请参阅此问题:

如果 Kotlin 中的类型参数受另一个类型参数的限制,为什么它不能有任何其他范围?

但是,如果您的自定义列表包含类型的元素T并且您想要比较它们,那么T应该实现Comparable<T>.

所以这应该是你所需要的:

class MyList<T: Comparable<T>> {
    fun insertSorted(ele: T) {
    }
}

推荐阅读