У меня есть два метода расширения Kotlin для одного и того же класса, но с разными общими сигнатурами, и компилятор жалуется

Я пишу две функции расширения для одного и того же класса:

class Something<T:Any> { ... }

Они похожи:

fun Something<Int>.toJson(): String = ...
fun Something<Double>.toJson(): String = ...

И приводит к ошибке компилятора:

Котлин: конфликт декларации платформы: следующие декларации имеют одинаковую подпись JVM

Как я могу создать две функции расширения, различающиеся только сигнатуры дженериков? или это невозможно?

Примечание. этот вопрос специально написан и на него ответил автор (Самостоятельные вопросы), так что ответы на часто задаваемые темы Kotlin присутствуют в SO. Он возник в Kotlin Slack #general channel.


person Jayson Minard    schedule 23.02.2016    source источник


Ответы (1)