gpt4 book ai didi

java - 将带有通配符的方法重写从 Java 转换为 Scala

转载 作者:行者123 更新时间:2023-12-02 02:49:18 24 4
gpt4 key购买 nike

我有一个 Java 方法签名,但似乎无法将其转换为 Java 中的签名。

这是Java代码:

public class InjectorListCellRenderer extends DefaultListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
throw new RuntimeException("not important");
}
}

这里是我希望等效的 Scala 代码:

class InjectorListCellRenderer(var painter: ParticleLabelPainter) extends DefaultListCellRenderer {
override def getListCellRendererComponent(list: JList[_], value: Any, index: Int, isSelected: Boolean, cellHasFocus: Boolean): Component = {
throw new RuntimeException("not important")
}
}

但是,当使用 sbt 和 Scala 2.11.8 进行编译时,出现以下错误:

类 InjectorListCellRenderer 需要是抽象的,因为类型为 (x$1: javax.swing.JList[_ <: Object], x$2: Object, x$3: Int, x$4: Boolean, x 的特质 ListCellRenderer 中的方法 getListCellRendererComponent $5: boolean 值)java.awt.Component未定义

可以找到基类 DefaultListCellRenderer 的文档 here

我似乎无法用自己的代码重现这个问题。

最佳答案

从错误消息开始,我猜测以下内容应该有效:

class InjectorListCellRenderer(var painter: ParticleLabelPainter) extends DefaultListCellRenderer {
override def getListCellRendererComponent(list: JList[_ <: AnyRef], value: AnyRef, index: Int, isSelected: Boolean, cellHasFocus: Boolean): Component = {
throw new RuntimeException("not important")
}
}
<小时/>

编辑:经过一些实验,我认为由于 Java 和 Scala 的类型表示之间存在一些不一致,从 DefaultListCellRenderer 继承并覆盖 getListCellRendererComponent 是不可能的。如果这对您很重要,您可以考虑提交错误报告。

关于java - 将带有通配符的方法重写从 Java 转换为 Scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44083186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com