Я читал эту статью в Java Generics и там упоминается, что конструктор для ArrayList
выглядит примерно так:
class ArrayList<V> {
private V[] backingArray;
public ArrayList() {
backingArray = (V[]) new Object[DEFAULT_SIZE];
}
}
Мне не удалось понять, как стирается стирание и проверка типов компилятором, как объясняется там. Одна точка, которую я получил, это то, что параметр типа преобразуется в тип Object
.
Я мог бы представить это как (заменяя все V
на Object
), но это определенно неверно.
class ArrayList<Object> {
private Object[] backingArray;
public ArrayList() {
backingArray = (Object[]) new Object[DEFAULT_SIZE];
}
}
Как именно он преобразуется в тип Object
, но все еще сохраняет безопасность типа для V
?
когда у меня есть ArrayList<String>
и ArrayList<Integer>
существуют ли два разных класса для каждого? Если нет, то где хранится информация типа String
и Integer
?