我正在尝试在Scala中实现一个抽象的通用Java类,并且我收到了表单错误
$http.post('http://xyz.mybluemix.net:9000/post', data);
我正在实现的库类如下所示:
object creation impossible, since method B in class A of type (x$1: A<Concrete1, Concrete2>#C)Unit is not defined
我希望实现一个public abstract class A<T, U> {
public void B(C);
public abstract class C {
// elided
}
}
来交回库(它将调用A
,提供B
)。在Java中,我可以这样做:
C
在Scala中,我正在尝试
new A<Concrete1, Concrete2>() {
@Override
public void B(C c) {
// implementation
}
}
我在顶部收到错误消息。使用new A[Concrete1, Concrete2] {
def B(c: C): Unit = {
// implementation
}
}
,编译器会抱怨override
。似乎Scala类型系统无法识别method B overrides nothing
我作为C
传入的内容,但我不确定 认为它是什么类型。
我已尝试在A<Concrete1, Concrete2>#C
:self: A[Concrete1, Concrete2] =>
上指定C
和自我类型,但都没有解决问题。我也尝试了def B(c: self.C
,但这会引发语法错误。
有什么建议吗?
答案 0 :(得分:1)
解决:def B(c: A[Concrete1, Concrete2]#C): Unit
。需要通用类型信息才能成为有效覆盖,但我不知道#
运算符。