В 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);