В чем разница в двух следующих объявлениях ArrayList?
ArrayList<Integer> nunbers = new ArrayList<Integer>();
против
ArrayList<Integer> nunbers = new ArrayList<>();
Один из них предпочтительнее другого?
В чем разница в двух следующих объявлениях ArrayList?
ArrayList<Integer> nunbers = new ArrayList<Integer>();
против
ArrayList<Integer> nunbers = new ArrayList<>();
Один из них предпочтительнее другого?
Второй имеет свой параметр типа inferred, что является новой вещью в Java 7. <>
называется алмаз".
Также обратите внимание, что тип самого вывода не является новым в Java, но возможность вывести его для экземпляра генерируемого класса является новой.
Компиляторы от выпусков до Java SE 7 могут вывести фактические параметры типа общих конструкторов, аналогичные общим методам. Однако компиляторы в Java SE 7 и более поздних версиях могут вывести фактические параметры типа генерируемого класса, если вы используете алмаз (< > ).
Я бы сказал, что второй вариант, вероятно, предпочтителен, пока вы можете убедиться, что код должен запускаться только на Java 7, поскольку он более понятен и только уменьшает избыточную информацию.
Второй не будет компилироваться, если версия вашего java-компилятора меньше 1.7.
Второй способ уменьшает беспорядок кода, он новый в java 7. Но ваш код должен был быть
List<Integer> nunbers = new ArrayList<>();
Поскольку вы можете запрограммировать интерфейс List
, выводится парам реализации ArrayList
.
Последний - это ярлык, который можно использовать с Java версии 7 или новее.
Они будут скомпилированы с тем же кодом, так как Java 7 - это просто ярлык, который вы можете использовать, так как он на 100% понятен, что принадлежит <>
, вы можете оставить его пустым