Заявление о создании платформы с сопоставимым

Я получаю сообщение об ошибке Clarity Platform Clash от компилятора в результате нескольких реализаций по умолчанию интерфейсов Comparable (показано ниже).

interface ClassA: Comparable<ClassA> { val x: Int get override fun compareTo(other: ClassA): Int = this.x.compareTo(other.x) } interface ClassB: Comparable<ClassB> { val y: String get override fun compareTo(other: ClassB): = this.y.compareTo(other.t) } data class ClassAB(val x: Int, val y: String): ClassA, ClassB { ... } 

Я понимаю, почему я получаю эту ошибку; обе версии по умолчанию сопоставляются с compareTo(Object) в Java. Таким образом, у ребенка Котлин не знает, какой из них использовать.

Есть ли механизм, который позволит мне выбрать тот, который будет использоваться, или, еще лучше, позвольте мне переопределить compareTo(Object) ? Я пробовал определить compareTo(Any) , но это было неправильно. Другая публикация предложила использовать @JvmName , но аннотация здесь не применяется (для компилятора).

Любая помощь будет принята с благодарностью. Благодаря!

Либо вам нужно избавиться от одного из этих сравнительных материалов, либо использовать композицию. Это зависит от вашего варианта использования.

Вот пример для композиции.

 data class ClassAB(val x: Int, val y: String): Comparable<ClassAB> { val classA: ClassA val classB: ClassB override fun compareTo(other: ClassAB): Int { // do compare classA.compareTo(other.classA) classB.compareTo(other.classB) throw UnsupportedOperationException("not implemented") } } 
Intereting Posts
Определите глобальную функцию в Kotlin, которую я буду использовать в html-файле для использования в качестве обратного вызова onclick Присвоить лямбда непосредственно унаследованному абстрактному методу Как акцептор может добавить значение в состояние и отправить обратно инициатору Веб-просмотр Android с kotlin. не работает тип ввода = файл AAR / JAR не генерируется с помощью Android Studio 3.0 Canary 7 Котлинский кастрюля против котлинского бульдога instance :: class.java vs. instance.javaClass Выполните краткое описание добавления свойств класса в Котлине Kotlin + Mockito2: ClassNotFoundException для тестовых тестов Многопоточный рендеринг изображений в JavaFx / Kotlin Котлин и Спарк – вопросы SAM Как я могу переопределить java-метод и изменить значение nullability параметра? Кинжал 2, не может вводить презентатора в мою деятельность Как использовать @link и @code в kotlin kDoc Поведение RxJava Schedulers.immediate () во время модульного тестирования