Вопрос может показаться крайне простым, однако, самую очевидную информацию, порой, бывает сложно "загуглить". В пример предложу инициацию ArrayList:
ArrayList<String> someList = new ArrayList<>();
Стоит ли указывать тип хранимых в списке объектов еще и в правой части выражения, в угловых скобках? Какова роль такой двойной инициализации. Часто, в чужом коде, вижу и подобную запись:
ArrayList<String> someList = new ArrayList<String>();
Однако, IDE подчеркивает второй "String" серым цветом, и указывает, что тип можно второй раз не указвать вообще. Но, если такая возможность существует, значит бывают ситуации, когда это необходимо. Прошу объяснить, когда.
Это так называемый оператор diamond (бриллиант, алмаз). Введен в Java SE 7. Он называется так, потому что чем-то похож на камень: <>.
до Java 7
ArrayList<String> someList = new ArrayList<String>();
после Java 7
ArrayList<String> someList = new ArrayList<>();
Включение оператора алмазов (<>) в Java SE 7 означает, что код, который создает универсальные классы может быть более компактным и удобочитаемым.
Так что не обязательно указывать тип хранимых в списке объектов еще и в правой части выражения, в угловых скобках.
Продвижение своими сайтами как стратегия роста и независимости