Почему последний с List должен использоваться вместо ArrayList?
Это хорошая практика: Программа для интерфейса, а не для реализации
Заменив ArrayList
на List
, вы можете изменить реализацию List
в будущем, как показано ниже, в зависимости от вашего варианта использования.
List<Object> list = new LinkedList<Object>();
/* Doubly-linked list implementation of the List and Deque interfaces.
Implements all optional list operations, and permits all elements (including null).*/
OR
List<Object> list = new CopyOnWriteArrayList<Object>();
/* A thread-safe variant of ArrayList in which all mutative operations
(add, set, and so on) are implemented by making a fresh copy of the underlying array.*/
OR
List<Object> list = new Stack<Object>();
/* The Stack class represents a last-in-first-out (LIFO) stack of objects.*/
OR
некоторая другая List
конкретная реализация.
List
интерфейс определяет контракт, и конкретная реализация List
может быть изменена. Таким образом, интерфейс и реализация слабо связаны.
Вопрос по теме SE:
Что значит «программировать на интерфейс»?