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

2 番目の例は List<> が List から派生しているためコンパイルされますが、最初の例がコンパイルされない理由はその逆ではありません。

于 2012-05-06T17:25:19.220 に答える