5
如果非要在java中階覆蓋Java類方法引用內部類
public class A
{
protected class B
{
}
protected void method(B b) {...}
}
定義下面的類,我想從它在Scala和重寫方法繼承。我本來希望做到以下幾點:
方法方法覆蓋什麼:
class C extends A {
override def method(b: B): Unit = {
// ... do something
super.method(b)
}
}
然而,當我這樣做,這樣給下面的錯誤Scala編譯器不喜歡。注意:C類的超類包含以下非最終成員名爲method:protected [package ...] def method(x $ 1:A#B):單元
我可以使其工作的唯一方法是做到以下幾點:
class C extends A {
override def method(b: A#B): Unit = {
// ... do something
super.method(b.asInstanceOf[this.B])
}
}
我覺得有這樣做相當難看,想知道是否有這樣做的一個更合適的方法?
感謝
德
這個問題似乎是與eclipse中的編譯器一起工作的。我用sbt對它進行了測試,它的確如你所說的那樣工作 - 事實上,它在eclipse中編譯的變化在sbt編譯中不起作用。我會進一步調查,試圖找出與日食的問題。 – user79074
我猜測問題是在編譯器中,因爲它也發生在eclipse中。已經轉載了Scala 2.9.2和Scala 2.10.1。所以提交了一個scala lang項目的bug。 – user79074
[SI-7946](https://issues.scala-lang.org/browse/SI-7946),適合那些在家玩的人。 – Hugh