Как видно из источника ArrayList
здесь , большинство реализованных методов аннотируются как @override
, потому что все они определены через интерфейс List
, поэтому, если выЯ буду использовать только базовые функции (именно это вы и будете делать большую часть времени). Разница не будет практической.
Разница придет, если однажды вы подумаете, что функции ArrayList
больше не подходят для вашей проблемы, и вам понадобится что-то другое (например, LinkedList
).Если вы объявили все как List
, но создали его как ArrayList
, вы легко переключитесь на новую реализацию, изменив экземпляры на new ArrayList()
, тогда как в другом случае вам придется изменить также все объявления переменных.
ИспользованиеList list = new ArrayList()
- это больше стиль ООП, поскольку вы заявляете, что вас не интересует конкретная реализация списка, и что вы хотите отбросить статическую информацию о типе, поскольку вы будете полагаться на интерфейс, предоставляемый этим видом абстрагирования коллекции.от его реализации.