Известно, что 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 reason but I have some
question in my mind that mentioned above