Поскольку sortedWith поддерживается только в общих библиотеках, я бы сказал, что он требует Comparable для более безопасной обработки различий в том, как целевые платформы обрабатывают сравнения элементов.
Из-за получателей обоихподписи, являющиеся своего рода списком (не в смысле типа Котлина), можно ожидать, что сравнения могут быть между разными типами между двумя итерациями.Если у вас нет сигнатуры compareTo между типом приемника и типом входа, то он не будет знать, как безопасно конвертировать между компаратором Kotlin и, скажем, сравнением Javascript, где
"" == false
равно True
"Hello World" == false
является False
Хотя, вероятно, эти типы специальных языковых правил принимаются во внимание при проектировании языка, это пример для примитивов, где, если бы у нас были определенные во время выполнения объекты и другая сложная информация,это может быстро сломаться.
Если Comparable не использовался в качестве промежуточного интерфейса, ожидаемые сравнения могут иметь смысл в Kotlin, но при переводе на целевую платформу могут иметь неожиданные последствия.
Короче говоря, это немногоиз дополнительного слоя, чтобы обеспечить безопасность.