Имея следующий код:
Stack<Integer> integers = new Stack<Integer>();
Stack<? extends Number> numbers = integers;
Number n = numbers.pop();
numbers.push(3);
numbers.push(n);
Я получаю ошибки компиляции в последних двух строках, но, хотя я немного подумал, я не понимаю, почему ошибки компиляции существуют.
The method push(capture#2-of ? extends Number) in the type Stack<capture#2-of ? extends Number> is not applicable for the arguments (int)
Когда я комментирую последнюю строку, я все еще получаю указанную выше ошибку компиляции, но, насколько я понимаю, компилятор должен иметь возможность вывести правильный тип (стек) из этих строк.
Большое спасибо