【发布时间】:2012-09-04 03:59:46
【问题描述】:
在 Java 的 ArrayList<T>(可能还有许多其他类)内部发生的情况是,有一个内部 Object[] array = new Object[n];,其中写入了 T 对象。每当从中读取一个元素时,就会进行一次强制转换 return (T) array[i];。因此,每次阅读都要进行演员表。
我想知道为什么要这样做。对我来说,他们似乎只是在做不必要的演员表。只创建一个T[] array = (T[]) new Object[n]; 然后只创建一个return array[i]; 而不进行强制转换不是更合乎逻辑并且稍微快一点吗?每个数组创建只有一次强制转换,通常远小于读取次数。
为什么首选他们的方法?我不明白为什么我的想法不是严格意义上的更好?
【问题讨论】:
-
因为
Object[]不是T[]。见stackoverflow.com/a/6709604/238419