此代碼不編譯:無法覆蓋的方法,因爲名稱衝突
import java.util.List;
class A {
void foo(List l) { }
}
class B extends A {
void foo(List<?> l) { }
}
然而,下面的代碼編譯(在d FOO覆蓋FOO中C)。爲什麼?
class C {
void foo(List<?> l) { }
}
class D extends C {
void foo(List l) { }
}
請發佈編譯錯誤 - 它會使問題更容易回答。 –
OK這裏是消息:B中的name clash foo(java.util.List >)和A中的foo(java.util.List)具有相同的擦除,但兩者都不會覆蓋另一個。 – Gmacar