Witam, dlaczego poniższy kod się kompiluje? W metodzie addAll(Collection<? extends E> c) z klasy Vector, składnia <? extends E> oznacza "some type that either is E or a subtype of E", a przecież klasa Stack dziedziczy z klasy Vector, więc Vector nie jest podtypem klasy Stack (tylko Stack jest podtypem klasy Vector).
Stack<Integer> stack = new Stack<Integer>();
stack.push(3);
stack.push(5);
stack.push(8);
Vector v = new Vector();
v.add(1);
v.add(2);
v.add("one");
v.add("two");
v.add(3);
stack.addAll(v);