<T extends Number> void m1(List<T> list) {
list.add(list.get(0));
}
void m2(List<? extends Number> list) {
list.add(list.get(0));
}
上記の2つの方法の違いを理解するのは難しいと感じました。
第一の方法m1()
は正常にコンパイルが、方法m2()
は、コンパイラエラーを生成します。Javaワイルドカードキャプチャ
The method
add(capture#1-of ? extends Number)
in the typeList<capture#1-of ? extends Number>
is not applicable for the arguments(capture#2-of ? extends Number)
TypeErasureを.... –