Я не уверен, почему последнее утверждение в следующем коде является незаконным. 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));