我定义了一个实现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中出现错误,我该如何解决它?
答案 0 :(得分:8)
它是kotlin bug-KT-14115,即使您让enum
类实现接口,其中包含name()
函数被拒绝。 / p>
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);
答案 1 :(得分:0)
上面的示例正在使用具有属性name
而不是函数name()
的接口。
interface Name {
val name: String;
}
enum class Color : Name;