Javaのシグネチャに変換できないJavaメソッドのシグネチャがあります。ここでJavaからScalaへのワイルドカードでメソッドのオーバーライドを変換する
は、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はabstract型である必要があります。メソッドのgetListCellRendererComponentはtrait型のListCellRenderer(x $ 1:javax.swing.JList [_java.awt.Componentが定義されていません
基本クラスDefaultListCellRendererのドキュメントはhereです。
自分のコードでこの問題を再現できないようです。
実際に試しましたか?私が何かを逃していない限り、あなたは同じ消しゴムで2つの方法に関するエラーを取得する必要があります。そしてもしそうなら、どちらのメソッドもJavaメソッドをオーバーライドしないので、 'JList'コードによって呼び出されません。 –
私は提案された解決策を試しましたが、うまくいきません。 – KeyboardDrummer
これは2つの解決策であることを明確にするために、両方を同時に使用することはできません(同じクラス名)。私は両方のコンソールで実行し、コンパイルしたが、私はそれを使用して完全なアプリを持っていない。 – Stephen