当前位置: 首页 > 知识库问答 >
问题:

实现Java接口时的“意外重写:以下声明具有相同的JVM签名”

费凯康
2023-03-14

我试图从Kotlin代码扩展RuntimeException并实现Java定义的GraphQLError接口时遇到以下错误。这是一个错误:

下面是我的代码:

class NegativeCountException() : RuntimeException(), GraphQLError {
  override fun getMessage(): String? {
    TODO("not implemented")
  }
  <...>
}

其中graphqlerror是一个接口,在Java中定义如下所示:

public interface GraphQLError {
  String getMessage();
  <...>
}

它似乎与throwable中定义的getMessage()冲突。

如何创建自己的运行时异常,实现GraphqlError?

PS:我也尝试了下面的,收到了一个非常相似的错误:

class NegativeCountException(override val message: String?) : RuntimeException(), GraphQLError {
  <...>
}

共有1个答案

郎华皓
2023-03-14

这是一个graphql问题。我的解决办法:

重新实现GraphQLError、ExceptionWhileDataFetching和DataFetcherErrorHandler。

KGraphQLError是一个用于自定义错误的“固定”kotlin接口(带有val而不是getters)。

您的自定义错误现在可以扩展Throwable并实现KGraphQLError,并得到正确的处理。

更多信息请访问:http://graphql-java.readthedocs.io/en/latest/execution.html

 类似资料:
  • Kotlin在这部分中犯了错误:

  • 在最后一个Kotlin类中,我有以下错误:“class”KotlinClass“不是抽象的,并且不实现基类成员public abstract fun setMessages(var1:(Mutable)Collection!):在com.package.ChildClass中定义的单元。 当我接受使用IDE生成方法实现的建议时,我有: Public open fun setMessages(Mes

  • 使用下面的代码,我在IntelliJ IDEA 13.1.6和Kotlin插件0.11.91.AndroidStudio.3中收到以下错误: Java类,< code>JavaInterface.java: Kotlin类, 我尝试通过添加<code>override fun getName():String?=名称,但这会产生相同的错误。 我可以想到一种替代方法: 但是在我的现实世界中,我有许多

  • 问题内容: 我有两个Java接口和一个实现类。 (我已经使用Eclipse直接运行程序,并且我没有尝试通过从命令行进行显式编译来检查任何编译器警告等)。 为什么它们运行没有问题?为什么Java允许这样做,即使它满足两个接口的“合同”,却在实现类时造成歧义? 更新了示例。 问题答案: Java语言规范的第8.1.5节专门允许这种情况: 类中的单个方法声明可以实现多个超级接口的方法。例如,在代码中:

  • 我有一个基本接口,并从中扩展了3个接口,和。在对进行了一些业务更改之后,现在与相同,但为了一致性,我不希望仅使用,而不是使用扩展接口。我试着这样做: 然后,ESLint警告我不要使用空接口。如果我不想禁用此规则,是否有方法将声明为与相同的接口?

  • public final fun():myclass中定义的字符串 公共抽象乐趣getTheString():myclass中定义的字符串 我还有一个错误:类'MyClass'不是抽象的,并且没有实现MyInterface中定义的抽象成员公共抽象乐趣getTheString():String。 所以我有几个问题: null