Коллекции в Java-Better Programming Practice - PullRequest
3 голосов
/ 05 декабря 2011

В большей части кода Java, который использует коллекции, я вижу что-то вроде этого.

List<String> list = new ArrayList<String>(); 

Но мне всегда было интересно, почему оно предпочтительнее, чем

ArrayList<String> = new ArrayList<String>();

Я немного исследовално не смог понять многое.

Ответы [ 3 ]

10 голосов
/ 05 декабря 2011

Потому что при использовании объекта по его интерфейсу вы можете позже изменить реализацию. Например:

public ArrayList<String> doSomething(..) {
    ...
    return arrayList;
}

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

  • если ваш метод возвращает просто List, все готово
  • если ваш метод возвращает ArrayList, вы должны перейти во все места, где вызывается метод, и изменить его. И что, если кто-то использовал некоторые специфичные для arraylist методы - вы должны подумать, как это изменить. И это хороший сценарий. Если ваш код является библиотекой, и другие филиалы / компании используют его, вы можете застрять в неэффективном коде.

Смотри также:

2 голосов
/ 05 декабря 2011

Привет, вот преимущества использования интерфейсного объекта

http://artofsoftwarereuse.com/2010/04/24/5-advantages-of-using-interfaces-for-reusable-assets/

1 голос
/ 05 декабря 2011

Учитывая, что Java является языком со строгой типизацией, рекомендуется всегда программировать с использованием интерфейсов (в разумных пределах, конечно). Это позволяет позже без особых усилий поменять реализацию.

Это особенно верно для параметров метода, поскольку оно не привязывает вас к конкретной реализации. Возможно, вы используете ArrayList в одном случае, но вы используете LinkedList в другом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...