Итак, я обнаружил, что Collection
как Interface
имеет много подинтерфейсов и подклассов. Одна вещь, которая обычно замечается, состоит в том, чтобы использовать интерфейс вместо фактического класса, который обеспечивает гибкость:
List<Interger> L1 = new ArrayList<>();
Но это также ограничивает использование некоторых специальных методов в реальных Class
, (в случае ArrayList
не так много специальных методов). Но это можно решить, используя кастинг.
List<Integer> L2 = ((ArrayList<Integer>) L1).clone();
Однако интересно, что LinkedList
реализует Collection
, List
, Queue
, Deque
.
Так, каков наилучший сценарий использования LinkedList
общего?
List<> L1 = new LinkedList<>();
Queue<> Q1 = new LinkedList<>();
Deque<> D1 = new LinkedList<>();
- Если я использую
List
, тогда это кажется ненужным, потому что я могу сделать
List
от ArrayList
.
- Должен ли я всегда выбирать
Interface
, который всего на 1 уровень выше Class
, в данном случае Deque
над Queue
?
Я думаю, это просто сбивает с толку, потому что Queue
и Deque
не реализуют List
, а LinkedList
. И я не понимаю, почему это должно быть?
Спасибо,