java—arraylist的泛型实现与没有泛型的旧实现之间的差异

1cklez4t  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(277)

我在一次采访中被问到:
arraylist的泛型实现与不使用泛型的旧实现之间有什么区别?
我知道它们在使用方式、优点和限制方面的差异,但我找不到实现上的差异。

yrdbyhpb

yrdbyhpb1#

有点奇怪的问题;据推测,他们本质上是在询问源文件之间的“差异” ArrayList.java 与Java1.5中的情况相比,Java1.4中的情况是这样的。
唯一的区别是所有不同的地方 <> 看起来,它们在1.4版本中根本不存在,而且一些地方的类型已从 Object 在1.4至 E 在1.5中,但没有您想象的那么多(例如,支持数组仍然是 Object[]E[] ,故意)。 get(int) 习惯于阅读 public Object get(int index) 但现在读到 public E get(int index) ,并添加用于读取的 public void add(Object item) 但现在读到 public void add(E item) .
这似乎很深奥,也不是特别相关,但通常面试官不必问问题,因为他们在寻找一个具体的答案;通常,他们问问题只是为了看看问题的进展。
例如,如果我在面试一个人,这让他们感到困惑,他们变得非常慌乱,这是重要的信息(你很容易慌乱,不确定自己的技能水平)。
如果有人立即说出所有的变化,我也会感兴趣,尽管不是这样(我想这是“正确的答案”)。
如果受访者对泛型、泛型在其他语言中的实现或向后兼容性的概念产生分歧,这也会很有趣。
我喜欢技术性的回答。我能想到的最令人印象深刻的答案是,是否有人会对arraylist为什么仍然使用 Object[] 作为备份阵列,而不是 E[] ,尽管我特别要求“差异”(因为该部分没有区别,但因为它是这样工作的,例如 get() 方法中有丑陋的强制转换:强制转换为类型var,这会导致编译器警告)。

相关问题