java – 由于名称冲突而无法覆盖方法

此代码无法编译:

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) { }
}

最佳答案 第二个例子编译因为List<>派生自List,但不是另一种方式,这就是第一个例子不编译的原因.

点赞