Я читал эту статью в 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?