Компиляторы от выпусков до 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% понятен, что принадлежит <>, вы можете оставить его пустым