В чем разница между List и ArrayList?

Я недавно использовал ArrayList в своем проекте Android в офисе, и я немного запутался между List и ArrayList, в чем разница между ними и что я должен использовать?

Также я видел некоторые его реализации.

List<SomeObject> myList = new ArrayList<SomeObject>();

ArrayList<SomeObject> myList = new ArrayList<SomeObject>();

В чем разница между этими двумя экземплярами?

Ответ 1

Нет никакой разницы между реализациями списков в обоих ваших примерах. Однако существует разница в том, как вы можете использовать переменную myList в своем коде.

Когда вы определяете свой список как:

List myList = new ArrayList();

вы можете вызывать только методы и ссылочные элементы, которые определены в интерфейсе List. Если вы определяете его как:

ArrayList myList = new ArrayList();

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

Тем не менее, когда вы вызываете метод интерфейса List в первом примере, который был реализован в ArrayList, будет вызван метод из ArrayList (поскольку интерфейс List не реализует никаких методов).

Это называется полиморфизмом. Вы можете прочитать об этом.