だから私はここでオラクルが提供するジェネリックチュートリアルを読んでいます: http://docs.oracle.com/javase/tutorial/java/generics/
そして、ジェネリックの使用方法を確実に理解するために、独自の例を実行してみました。次のコードがあります。
import java.util.*;
public class Generics {
class NaturalNumber {
private int i;
public NaturalNumber(int i) { this.i = i; }
}
class EvenNumber extends NaturalNumber {
public EvenNumber(int i) {
super(i);
}
}
public static void main(String[] args) {
Collection<? extends NaturalNumber> c = new ArrayList<>();
c.add(new EvenNumber(2)); //this line produces a compile time error
}
}
私の目標は、NaturalNumber のサブタイプである任意のオブジェクトを Collection c に追加できるようにすることです。なぜこれが機能しないのか、Oracle のチュートリアルを読んでも理解できませんでした。