В Kotlin, как я могу обойти конфликты наследуемых объявлений, когда класс enum реализует интерфейс?

Я определяю класс перечисления, который реализует Neo4j RelationshipType :

 enum class MyRelationshipType : RelationshipType { // ... } 

Я получаю следующую ошибку:

Inherited platform declarations clash: The following declarations have the same JVM signature (name()Ljava/lang/String;): fun <get-name>(): String fun name(): String

Я понимаю, что метод name() из класса Enum и метод name() из интерфейса RelationshipType имеют одну и ту же подпись. Это не проблема на Java, но почему это ошибка в Kotlin, и как я могу ее обойти?

это kotlin bug-KT-14115, даже если вы делаете класс enum реализует интерфейс, который содержит функцию name() лишен.

 interface Name { fun name(): String; } enum class Color : Name; // ^--- the same error reported 

НО вы можете имитировать класс enum с помощью sealed класса, например:

 interface Name { fun name(): String; } sealed class Color(val ordinal: Int) : Name { fun ordinal()=ordinal; override fun name(): String { return this.javaClass.simpleName; } //todo: simulate other methods ... }; object RED : Color(0); object GREEN : Color(1); object BLUE : Color(2); 
Intereting Posts
Android Kotlin Realm Правильный способ запроса + обновление Async Kotlin – Ограничить расширение метода расширения Функция rxjava :: zip возвращает пустой результат Невозможно скомпилировать проект с использованием Gradle и Kotlin Kotlin – Расширение для финального класса Onclick не отвечает с помощью kotlin в андроид-студии Как обновить виджет Android Studio Kotlin Броски Исключение в методе с Котлином Вызов функции Java с vararg, не компилируемым в Котлине Не удается получить доступ к EditText или другим компонентам пользовательского интерфейса с помощью Kotlin Как выполнить многоступенчатую инициализацию val Почему потоки показывают лучшую производительность, чем сопрограммы? Kotlin, NoSuchMethodError на операторе get Нельзя ли градировать проект построения, когда я добавляю класс ChatInformation kotlin, который расширяет RealmObject до моего проекта, где ошибка? Почему я могу использовать имя выражения лямбда, но не имя функции?