Я пытаюсь понять вывод локального переменного типа в Java 10.
-
Код ниже отлично работает во время компиляции и времени выполнения:
List list1 = Arrays.asList(1L, 2.0F, "3"); var list2 = list1;
-
Однако эта строка генерирует ошибку компиляции:
var list3 = Arrays.asList(1L, 2.0F, "3");
Error:java: java.lang.AssertionError: Unexpected intersection type: java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>>
Я не совсем понимаю, почему второй случай ошибочен, но не первый случай. Поскольку я ожидаю, что компилятор выводит тип list1
и обрабатывает list2
и list3
одинаково. Заранее спасибо.