gpt4 book ai didi

java - 为什么 ArrayList 在内部使用 Object[](而不是 E[])?

转载 作者:太空狗 更新时间:2023-10-29 22:56:17 25 4
gpt4 key购买 nike

<分区>

ArrayList 内部使用 Object 数组:

private transient Object[] elementData;

并在 E get(int) 方法中将其转换为 E 类型。

我的问题是:为什么 ArrayList 不使用 E[] 来存储对象?

我知道在编译器运行后,类型删除会将 E[] 转换为 Object[],但仍然需要在每次 get() 调用时转换为 E?

如果使用它 E[] 下面的代码不是必需的

return (E) elementData[index];

选择使用Object[]是为了性能?

当类型删除将 E[] 转换为 Object[] 时,java 在内部进行强制转换以在泛型方法中返回正确的类型?

已编辑

让我更好地解释一下我的疑问:

如果 ArrayList 使用 E[] 而不是 Object[],则在方法 get(int) 中不需要强制转换。这将提高性能(显然)。

但是,没有魔法,我认为使用 E[] JVM 无论如何都会转换对象,因为类型删除会在 Object 中转换。正确吗?

ps:抱歉我的英语不好。

25 4 0