4

此代码无法编译:

import java.util.List;

class A {
  void foo(List l) { }
}

class B extends A {
  void foo(List<?> l) { }
}

但是,以下代码可以编译(D 中的 foo 覆盖 C 中的 foo)。为什么?

class C {
  void foo(List<?> l) { }
}

class D extends C {
  void foo(List l) { }
}
4

1 回答 1

2

第二个示例可以编译,因为 List<> 派生自 List,但不是相反,这就是第一个示例无法编译的原因。

于 2012-05-06T17:25:19.220 回答