2010-12-08 3 views
34

В коллекции Framework мы имеем интерфейс List и класс AbstractList:Почему ArrayList имеет «реализует список»?

AbstractList implements List 

И ArrayList расширяет AbstractList и

implements List 

Мой вопрос: почему ArrayList есть пункт implements List?

Если ArrayList extends AbstractList и AbstractList implements List, разве мы не можем сказать, что ArrayList implement List?

ответ

39

Да. Его можно было бы опустить. Но при этом сразу видно, что это List. В противном случае потребуется дополнительный клик по коду/документации. Я думаю, что это причина - ясность.

И добавить то, что прокомментировал Joeri Hendrickx - это с целью показать, что ArrayList реализует List. AbstractList всего изображения для удобства и уменьшения дублирования кода между List реализациями.

+21

Не только это, но я предпочитаю этот стиль, потому что это намерение-раскрытие. Целью arraylist является реализация List. Расширение абстрактного списка - это просто способ достижения этой цели. – 2010-12-08 12:42:57

6

Скорее всего, это связано с увеличением трассируемости структуры наследования. Таким образом, вам не нужно спускаться со всем деревом наследования при просмотре Javadoc или тому подобное.

5

Мои 2 цента должны учитывать тот факт, что ArrayList является списком. AbstractList просто завершает определенные реализации, которые требует список.