由于名称冲突,无法覆盖方法

时间:2012-05-06 17:21:08

标签: java generics name-clash

此代码无法编译:

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

1 个答案:

答案 0 :(得分:2)

第二个例子编译因为List&lt;&gt;派生自List,但不是另一种方式,这就是为什么第一个例子不能编译。