Известно, что arraylist init. должно быть так
ArrayList<A> a = new ArrayList<A>();
ArrayList<Integer> a = new ArrayList<Number>(); // compile-time error
, так почему же Java это позволяет?
1. ArrayList<? extends Object> a1 = new ArrayList<Object>();
2. ArrayList<?> a2 = new ArrayList<Integer>();
тогда, если они верны, почему это не разрешено?
1. a1.add(3);
2. a2.add(3);
сообщение компилятора следующее: Метод add (int, capture # 1-of? Extends Object) в типе ArrayList не применим для аргументов ( int)
более общие сведения
1. a1.add(null e);
2. a2.add(? e);
Я читал об этом, но приятно слышать от вас. спасибо
другой забавный момент:
ArrayList<ArrayList<?>> a = new ArrayList<ArrayList<?>>(); // correct
ArrayList<?> a = new ArrayList<?>(); // wrong. I know it's reason but I have some
question in my mind that mentioned above