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

意外重写:以下声明在特定类层次结构上有相同的JVM签名错误

吕俊才
2023-03-14
public interface ParentInterface {
    void setMessages(Collection<String> var1);
}
public class ParentClass {
    protected Collection messages;

    public void setMessages(Collection messages)
    {
        this.messages = messages;
    }
}
public class ChildClass extends ParentClass implements ParentInterface {
}

com.package.kotlinclass.kt

class KotlinClass: ChildClass()

在最后一个Kotlin类中,我有以下错误:“class”KotlinClass“不是抽象的,并且不实现基类成员public abstract fun setMessages(var1:(Mutable)Collection!):在com.package.ChildClass中定义的单元。

当我接受使用IDE生成方法实现的建议时,我有:

  • Public open fun setMessages(Messages:(MutableCollection..Collection<*>?)):com.package.KotlinClass中定义的单元
  • Public open fun setMessages(Var1:MutableCollection?):com.package.KotlinClass中定义的单元

而我只能更改KotlinClass,因为其他类都是Java中的一个第三方库的类。帮帮某人吧,求你了,我已经在这个问题上花了很多时间了。

共有1个答案

帅德惠
2023-03-14

好吧,答案其实并不像看起来那么严格--是和不是。您可以使用纯kotlin来克服这个限制,但是您会在流程中松散一些功能/可能会在流程中引入一些不想要但明显的错误,所以您应该在继续之前真正调查一下在哪里使用了这种方法,因为您需要基本上完全“切断”这种方法,以便修复编译错误。

所以在您的具体案例中,我知道您在Kotlin上为Jira开发了Atlassian插件。这是很重要的,因为我们知道在你的情况下,这种方法是可以避免的。

问题类为:com.atlassian.jira.web.action.jirawebactionsupport

并且它包含受保护的集合错误消息;

这样你就可以砍掉这条死肢:

open class SpecificAction : JiraWebActionSupport() {
    override fun setErrorMessages(p0: MutableCollection<String>?) = TODO()
    ...
}

在您的情况下,Java重写当然更可取,因为您不会松动任何内容,也不会引入潜在的错误,但是如果您只需要kotlin并且确信您不/不会使用这种方法,那么这个小的肮脏的黑客将会有所帮助。

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

  • 我试图从Kotlin代码扩展RuntimeException并实现Java定义的GraphQLError接口时遇到以下错误。这是一个错误: 下面是我的代码: 其中是一个接口,在Java中定义如下所示: 它似乎与中定义的冲突。 如何创建自己的运行时异常,实现GraphqlError? PS:我也尝试了下面的,收到了一个非常相似的错误:

  • 我们希望用LiquiBase取代各种土生土长的和手工的数据库部署过程。我们有几十个数据库,我们希望最终使用liquibase。许多数据库中已经有数百个对象。 因此,当迁移运行时,它将首先在tables.xml中进行模式更改,然后在triggers.xml中进行触发器,以此类推。 triggers.xml databaseChangeLog如下所示: 我为每个对象设置了一个更改。为了能够跟踪DATA

  • 问题内容: 我已经下载了一些用Java编写的开源软件,并尝试使用Eclipse进行编译。我收到错误:在某些文件中, “类名”类型的层次结构不一致 。是什么导致这些错误,我该如何解决? 问题答案: 这意味着您正在尝试实现一个不存在的接口,或者您正在扩展一个不存在的类。 尝试刷新您的Eclipse。 如果不起作用,则可能意味着您引用了不在构建路径中的JAR。检查项目的类路径,并验证其中是否包含接口或类

  • 问题内容: 给定一个类(无论它是否是新型类),如何生成 所有 基类- 在继承层次结构中的任何位置? 问题答案: 适用于新样式和旧样式类,并以与方法解析相同的顺序返回:类及其所有祖先类的列表。