Когда вы создаете ArrayList без указания типа объекта, он создает его автоматически при добавлении первого объекта? - PullRequest
21 голосов
/ 14 октября 2010

Например, вместо того, чтобы делать

ArrayList<ClassName> variableName;

вы делаете

ArrayList variableName;

затем вы добавляете объект типа "ClassName"

variableName.add(objectName);

будет автоматически устанавливать тип вашего массива как

ArrayList<ClassName>

Ответы [ 3 ]

38 голосов
/ 14 октября 2010

Нет.Дженерики предназначены только для компиляции.Вы просто теряете выгоду от этого чека.Во время выполнения вся общая информация стирается

Другими словами,

ArrayList<Type> 

во время выполнения - это просто ArrayList.Преимущество этого перед списком состоит в том, что когда вы пишете свой код, компилятор проверит, что вы не добавили в свой список ничего неуместного.

14 голосов
/ 14 октября 2010

, если вы не укажете, это будет так же, как если бы вы указали ArrayList , что означает, что любой объект может быть добавлен в ArrayList.Проверки типов, которые выполняются при указании класса, происходят во время компиляции, а не во время выполнения, поэтому невозможно, чтобы вещи работали так, как вы предлагаете (определяя их более конкретный класс во время выполнения).

8 голосов
/ 14 октября 2010

Реальный тип действительно ArrayList. Тип ArrayList<ClassName> существует только для компилятора (это называется стиранием), и его целью является обеспечение безопасности типов на уровне компилятора. Но на уровне байт-кода вы не обладаете знаниями об общих типах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...