Инициализация при помощи ArrayList

141
09 апреля 2021, 08:00

В чем отличие результата инициализации первой записи от второй

List list = new ArrayList();
ArrayList arrayList = new ArrayList();
Answer 1

В первом примере

List list = new ArrayList();

создается объект типа List, а во втором

ArrayList arrayList = new ArrayList();

объект типа ArrayList. Это возможно, т.к. класс ArrayList реализует интерфейс List. Но есть одно но - в первом примере не будут доступны методы класса ArrayList, а только методы типа List, т.к. объект типа List, в то время, как во втором примере методы ArrayList будут доступны. А чтобы из объекта List создать объект ArrayList, достаточно ввести

ArrayList arrayList = (ArrayList) list;
Answer 2
List list;

Представляет собой любой объект реализующий интерфейс List. В Вашем случае это ArrayList, но чтобы воспользоваться специфическими методами этого класса, нужно будет приводить типы.

(ArrayList) list

В Вашем втором примере Вы сразу получаете переменную типа ArrayList.

ArrayList arrayList = new ArrayList();

Это всё, если кратко. Более подробно есть хорошая статья.

READ ALSO
Автозаполнение Mysql [закрыт]

Автозаполнение Mysql [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме

106
Где хранить id всей одежды в игре?

Где хранить id всей одежды в игре?

Пишу игру (на Android), одной из особенностей которой является кастомизация внешнего вида игрокаЕсть класс Character:

91
Bridge-методы java

Bridge-методы java

Прочёл в литературе, что в процессе Type Erasure (стирания типов) компилятор выполняет следующие действия:

134
Цепные и соединительные потоки

Цепные и соединительные потоки

Насколько я понимаю:

111