Kotlin继承-扩展具有相同方法名的JVM类和接口

Kotlin继承-扩展具有相同方法名的JVM类和接口,kotlin,graphql,graphql-java,Kotlin,Graphql,Graphql Java,我有一个自定义的异常类,如下所示: class GenericException(message: String?, errorCode: Int) : RuntimeException(message), GraphQLError { ..... } 大家都知道,RuntimeException扩展了Throwable,它有一个名为getMessage() 现在的问题是,这个接口GraphQLError(它是一个库接口)还有一个名为getMessage() 因此,编译器抱怨如下: 好的,我

我有一个自定义的
异常
类,如下所示:

class GenericException(message: String?, errorCode: Int) : RuntimeException(message), GraphQLError {
.....
}
大家都知道,
RuntimeException扩展了Throwable
,它有一个名为
getMessage()

现在的问题是,这个接口
GraphQLError
(它是一个库接口)还有一个名为
getMessage()

因此,编译器抱怨如下:

好的,我实现了这个方法:

override fun getMessage(): String {
    TODO("Not yet implemented")
}
现在我明白了:


我在这里该怎么办

我在评论中的猜测是正确的,kotlin允许多重继承。这确实是因为可抛弃的阶级

您可以使用
@JvmField
注释来指示编译器不要为字段生成getter和setter,然后自己创建getter/setter

接口消息{
fun getMessage():字符串
}
类泛型异常(
@JvmField重写val消息:字符串?,//也可以使用var
val errorCode:Int//我把它作为一个属性,可能不是
):RuntimeException(消息),HasMessage{
重写getMessage():字符串{
//返回super的getter,可能并没有用,因为在这个类中有字段作为属性
val superGetMessage=super.message
TODO(“尚未实施”)
}
}

.

我不认为这个错误是因为您实现了多个类/接口。这在kotlin中是完全可能的,但这是因为在删除kotlin接口的实现时,可以通过Throwable类检查错误是否仍然存在。非常感谢!成功了!今天学习了一个新概念。你能在这篇文章的基础上添加一条关于这项工作的评论吗?