3
我試圖實現斯卡拉一個抽象的,通用的Java類,我得到的形式在斯卡拉
object creation impossible, since method B in class A of type (x$1: A<Concrete1, Concrete2>#C)Unit is not defined
庫的錯誤與實現抽象成員類的抽象的,一般的Java類那我實施這個樣子的類:
public abstract class A<T, U> {
public void B(C);
public abstract class C {
// elided
}
}
,我想實現一個A
交還圖書館(它將調用B
,提供一個C
)。在Java中,我可以這樣做:
new A<Concrete1, Concrete2>() {
@Override
public void B(C c) {
// implementation
}
}
在Scala中,我試圖
new A[Concrete1, Concrete2] {
def B(c: C): Unit = {
// implementation
}
}
和我在上面的錯誤消息。使用override
,編譯器抱怨method B overrides nothing
。看來Scala類型系統並不承認我以A<Concrete1, Concrete2>#C
的身份通過了C
,但我不確定它認爲它是什麼類型的。
我試過指定self: A[Concrete1, Concrete2] =>
,以及C
:def B(c: self.C
上的自我類型,但都不能解決問題。我也試過def B(c: A[Concrete1, Concrete2].C)
,但是這會引發一個語法錯誤。
有什麼建議嗎?