@WildCherryCandy

В чем разница new ArrayList() и new ArrayList()?

Здравствуйте.
Собственно, в чем разница между List<T> list = new ArrayList<>(); и
List<T> list = new ArrayList();
?
P.S. В теме вопроса < > не отображается.
  • Вопрос задан
  • 2707 просмотров
Решения вопроса 1
yurikan
@yurikan
Java)
Форма записи с угловыми скобками говорит о том, что мы использовали generic-класс (дженерик или обобщение) с типизированными параметрами.

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

ArrayList catnamesList = new ArrayList<>();

Стоит всего лишь погуглить ;)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Конкретно в данном случае в Java 1.7 и старше вы не получите никаких видимых отличий кроме наличия или отсутствия двух предупреждений при компиляции. Но, конечно, угловые скобки лучше писать. Отсутствие угловых скобок означает «сперва я конструирую непараметризованный вообще объект, а котом присваиваю его в переменную, используя небезопасное приведение типов», а наличие их означает «подбери подходящие параметры для объекта на основе контекста». Разница может проявиться, например, в таком коде:

class NumberList<T extends Number> extends ArrayList<T> { ... }

public static void main(String... args) {
    List<String> list = new NumberList();
    ...
}


Этот код компилируется (с предупреждениями), но у вас могут возникнуть странные проблемы в рантайме. Если же вы поставите две угловые скобки, тут же будет ошибка компиляции: подходящий тип вывести нельзя.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы