Ste*_*fan 5 generics inheritance types scala raw-types
我目前正在使用jEdit插件的端口来编写Scala中的所有代码.但是我被迫在某一点上实现我自己的比较器.
我的简化代码如下:
class compare extends MiscUtilities.Compare {
def compare(obj1: AnyRef, obj2: AnyRef): Int = 1
}
Run Code Online (Sandbox Code Playgroud)
从IntelliJ查看时,MiscUtilities.Compare具有以下签名
public static interface Compare extends java.util.Comparator {
int compare(java.lang.Object o, java.lang.Object o1);
}
Run Code Online (Sandbox Code Playgroud)
但是当我试图编译我的课时,我得到一个错误说:
错误:类比较需要是抽象的,因为方法比较特性比较器类型(x $ 1:T,x $ 2:T)Int未定义类比较扩展MiscUtilities.Compare {
我也尝试使用Any和java.lang.Object作为类型,但到目前为止还没有运气.
非常感谢帮助:)
关心斯特凡
这可能是不可能的.如果这是错的,我想知道.
编辑:但你可以这样做:
// 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
}
Run Code Online (Sandbox Code Playgroud)
所以你仍然需要编写一些Java,但每个接口只需要一个简单的类MiscUtilities.Compare.