Понимание подстановочных знаков в Java generics

Я не уверен, почему последнее утверждение в следующем коде является незаконным. Integer должен быть подтипом ?, так почему я не могу присвоить его b?

List<String> a = new ArrayList<String>();
a.add("foo");

// b is a List of anything
List<?> b = a;

// retrieve the first element
Object c = b.get(0);
// This is legal, because we can guarantee
// that the return type "?" is a subtype of Object

// Add an Integer to b.
b.add(new Integer (1)); 
11
задан Oliver Charlesworth 12 December 2011 в 21:34
поделиться