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の バグです-KT-14115enum
クラスに関数を含むインターフェイスを実装させても、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);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加