данный фрагмент кодаПочему добавление подкласса типа a в коллекцию является незаконным?
//Creates a list of List numbers
List<List<Number>> num = new ArrayList<List<Number>>();
//Creates a list of List doubles
List<List<Double>> doub = new ArrayList<List<Double>>();
//List of doubles
List<Double> d = new ArrayList<Double>();
d.add(2.5);
d.add(2.6);
doub.add(d);
num.add(d);//This code will not compile
Почему это num.add (Doub) не будет разрешен? не является List<List<Number>>
a super type List<List<Double>>
?
Вы имели в виду num.add (d) вместо num.add (doub)? – Alex
Общие типы должны быть точными, если вы не разрешили '? расширяет подтипы или '? супер' супер type. –
Я отредактировал код. Он имел в виду 'num.add (d)', иначе вопрос не интересен! – romaintaz