4

だから私はここでオラクルが提供するジェネリックチュートリアルを読んでいます: 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 のチュートリアルを読んでも理解できませんでした。

4

3 に答える 3