ArrayList использует массив объектов внутри:
private transient Object[] elementData;
и в E get(int)
метод, который он использует для типа E.
мой вопрос: почему ArrayList не использует E [] для хранения объектов?
Я понимаю, что после запуска компилятора стирание типа преобразует E [] в Object [], но все равно нужно отбрасывать E в каждом вызове get()?
Если это используется E [], этот код ниже не нужен
return (E) elementData[index];
Выбор использования Object [] для производительности?
Как тип-стирание преобразует E [] в Object [], java делает литье внутри, чтобы возвращать правильный тип в общих методах?
EDITED
Позвольте мне лучше объяснить, в чем суть моих сомнений:
Если ArrayList использует E [] вместо Object [], в методе get (int) приведение не требуется. Это увеличит производительность (по-видимому).
Но нет никакой магии, я думаю, что использование E [] JVM все равно будет использовать объект, потому что стирание типа будет преобразовано в Object. Правильно?
ps: извините за мой плохой английский.