2014-02-18 4 views
3

Есть ли разница между следующими декларациями -Задание элементов коллекции типа во время создания экземпляра

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

и

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

В обоих случаях, так или иначе, список будет иметь элементы только типа String.

+1

Один работает с Java <= 6, другой - нет. – vanza

+0

Как дополнение, документация: http://docs.oracle.com/javase/7/docs/technotes/guides/language/type-inference-generic-instance-creation.html – SWoeste

ответ

5

Нет никакой разницы. Однако первый из них является законным на Java < = 7, а второй является законным только в Java 7 и был введен как короткая нотация *. Компилятор выведет из объявления общий тип.

* В основном это было сделано для удаления избыточной информации и снижения кодового шума. Так что теперь у вас есть:

Map<String, List<String>> myMap = new HashMap<>(); 

против:

Map<String, List<String>> myMap = new HashMap<String, List<String>>(); 

Первый намного легче на глазах.

Смежные вопросы