Я хочу реализовать двоичное дерево поиска в kotlin.
class BinarySearchTree<out T>
object Nil : BinarySearchTree<Nothing>
val a: BinarySearchTree<Int> = Nil // works fine
Однако, чтобы добавить элемент типа K
в дерево, мне нужен тип K
для расширения T
иреализовать Comparable<T>
.Если я использую следующий код, то получаю ошибку
fun <K> add(b : K) where K : T, K : Comparable<T> {}
Ошибка: тип T объявляется как «out», но встречается в позиции «in» в типе T.
Как я могу исправить интерфейс этого метода или класса, чтобы избавиться от проблемы?