ссылка на дженерик

219
24 июня 2018, 03:20
List<String> i = new ArrayList<>();
List i2 = i;
i2.add(new MyClass());

Почему такая запись функционирует? i2 уже ждет object в параметрах add, а не стринги. От чего это происходит?

Answer 1

И так у вас есть объект с типом ArrayList<>;

И у вас есть две ссылки i == List<String>; i2 == List

В этот конкретный объект вы можете добавить абсолютно любой тип. Но первой ссылкой i List<String> вы добавили ограничение типом String; Соответственно используя ссылку i вы сможете добавлять только объекты типа String

Следующим шагом вы добавляете еще одну ссылку i2 на объект new ArrayList<>, которая уже не имеет ограничений. Соответственно, используя эту ссылку вы можете добавить переменные любого типа.

READ ALSO
Как передать информацию в аннотацию?

Как передать информацию в аннотацию?

Использую кастомную аннотацию @Example("objectName"), которая переносит нужную информацию - "objectName"Задался спортивным вопросом - как в аннотацию передать...

210
Медленно работает Callable

Медленно работает Callable

Столкнулся с проблемой: медленно выполняется программа, использующая CallableВернее так: ответ выдается сразу, но потом она очень долго думает...

222
Чем отличаются ConnectTimeout и ConnectionRequestTimeout?

Чем отличаются ConnectTimeout и ConnectionRequestTimeout?

Есть пример запроса через RestTemplate поведение которого конфигурируется через ClientHttpRequestFactory и RequestConfigПри создании объекта RequestConfig задаются три...

230
подключение oracle database к приложению javaFX

подключение oracle database к приложению javaFX

установил Oracle Database 11g + SQLDeveloperСоздал нового пользователя и connection

199