ArrayList <> vs ArrayList <Integer>

В чем разница в двух следующих объявлениях ArrayList?

ArrayList<Integer> nunbers = new ArrayList<Integer>();

против

ArrayList<Integer> nunbers = new ArrayList<>();

Один из них предпочтительнее другого?

Ответ 1

Второй имеет свой параметр типа inferred, что является новой вещью в Java 7. <> называется алмаз".

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

Компиляторы от выпусков до Java SE 7 могут вывести фактические параметры типа общих конструкторов, аналогичные общим методам. Однако компиляторы в Java SE 7 и более поздних версиях могут вывести фактические параметры типа генерируемого класса, если вы используете алмаз (< > ).

Я бы сказал, что второй вариант, вероятно, предпочтителен, пока вы можете убедиться, что код должен запускаться только на Java 7, поскольку он более понятен и только уменьшает избыточную информацию.

Ответ 2

Второй не будет компилироваться, если версия вашего java-компилятора меньше 1.7.

Ответ 3

Второй способ уменьшает беспорядок кода, он новый в java 7. Но ваш код должен был быть

List<Integer> nunbers = new ArrayList<>();

Поскольку вы можете запрограммировать интерфейс List, выводится парам реализации ArrayList.

Ответ 4

Последний - это ярлык, который можно использовать с Java версии 7 или новее.

Ответ 5

Они будут скомпилированы с тем же кодом, так как Java 7 - это просто ярлык, который вы можете использовать, так как он на 100% понятен, что принадлежит <>, вы можете оставить его пустым