gpt4 book ai didi

generics - Scala 类无法覆盖扩展 java.util.comparator 的 Java 接口(interface)中的比较方法

转载 作者:行者123 更新时间:2023-12-02 17:29:46 30 4
gpt4 key购买 nike

我目前正在开发一个 jEdit 插件的端口,以便在 Scala 中编写所有代码。然而,我在某个时候被迫实现我自己的比较器。

我的简化代码如下:

class compare extends MiscUtilities.Compare {
def compare(obj1: AnyRef, obj2: AnyRef): Int = 1
}

从 IntelliJ 中查看时,MiscUtilities.Compare 具有以下签名

public static interface Compare extends java.util.Comparator {        
int compare(java.lang.Object o, java.lang.Object o1);
}

但是,当我尝试编译我的类时,我收到一条错误消息:

错误:类比较需要是抽象的,因为类型 (x$1: T,x$2: T)Int 的特征比较器中的方法比较未定义类比较扩展了 MiscUtilities.Compare {

我也尝试过使用 Any 和 java.lang.Object 作为类型,但到目前为止还没有成功。

非常感谢您的帮助:)

问候斯特凡

最佳答案

可能是impossible 。如果这是错误的,我想知道。

编辑:但你可以这样做:

// CompareImpl.java
abstract class CompareImpl implements MiscUtilities.Compare {
public int compare(Object o, Object o1) {
return doCompare(o, o1);
}

public abstract int doCompare(Object o, Object o1);
}

// MyCompare.scala
object MyCompare extends CompareImpl {
def doCompare(a: AnyRef, b: AnyRef) = 0
}

因此,您仍然需要编写一些 Java,但只需为每个接口(interface)编写一个简单的类,例如 MiscUtilities.Compare

关于generics - Scala 类无法覆盖扩展 java.util.comparator 的 Java 接口(interface)中的比较方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3329001/

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