В то время как я понимаю некоторые из угловых случаев генериков, я пропускаю что-то в следующем примере.
У меня есть следующий класс
1 public class Test<T> {
2 public static void main(String[] args) {
3 Test<? extends Number> t = new Test<BigDecimal>();
4 List<Test<? extends Number>> l =Collections.singletonList(t);
5 }
6 }
Строка 4 дает мне ошибку
Type mismatch: cannot convert from List<Test<capture#1-of ? extends Number>>
to List<Test<? extends Number>>`.
Очевидно, компилятор считает, что разные ?
на самом деле не равны. В то время как мое чувство кишки говорит мне, это правильно.
Может ли кто-нибудь предоставить пример, где я бы получил ошибку времени выполнения, если строка 4 была законной?
EDIT:
Чтобы избежать путаницы, я заменил =null
в строке 3 на конкретное назначение