Метод интерфейса agraments vs util Список - PullRequest
1 голос
/ 23 мая 2011

Я пишу интерфейс и его реализацию.Интерфейс имеет метод, подобный

doSomething(String[] strs, Integer[] ints, String msg);

. Я объявил параметры как массивы просто потому, что он будет вызывать внешний интерфейс с похожими аргументами.Некоторые люди предполагают, что doSomething agruments следует использовать List вместо массивов.Но я не смог найти ни одной наилучшей практики, объясняющей причину, почему предпочтительнее использовать список List?

Loc

Ответы [ 3 ]

1 голос
/ 23 мая 2011

Со списками легче работать, поскольку они имеют более богатый API и множество реализаций.Таким образом, в результате он становится более гибким и обслуживаемым.

Эффективная Java Джоша Блоха выдвигает на первый план еще одну причину предпочтения списков: «инвариантность».Обобщения проверяются во время компиляции, поэтому типизированные списки на самом деле отлавливают больше ошибок, чем массивы:

// Fails at runtime!
Object[] objectArray = new Long[1];
objectArray[0] = "I don't fit in"; // Throws ArrayStoreException
// Won't compile!
List<Object> ol = new ArrayList<Long>(); // Incompatible types
ol.add("I don't fit in");

Так что в некоторых случаях на самом деле безопаснее использовать списки над массивами.

это чем то, но это становится трудно объяснить.См. Эту ссылку на соответствующий раздел Effective Java, ch 5: http://java.sun.com/docs/books/effective/generics.pdf

HTH

0 голосов
/ 23 мая 2011

Это подпадает под ремонтопригодность.Вам будет очень удобно использовать подготовленные для вас методы.

0 голосов
/ 23 мая 2011

По сути, список является абстрактным типом, и его необходимо снова реализовать любым из членов его семейства, таким как ArrayList и т. Д. Таким образом, нет большой разницы в использовании массива и списка в отношении производительности, оба они идентичны. Только с точки зрения удобства обслуживания мы используем интерфейс List и можем реализовать его для любого семейства интерфейса List позже, основываясь на требованиях. Список также обеспечивает гибкие операции над массивом.

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