什么时候一个泛型数组是绝对必要的 -- 一个案例

2022-09-01 19:17:19

此 Q 用于查找一个示例情况,其中泛型数组是绝对必要的。

泛型和数组“不能很好地混合”。

是否存在泛型 ArrayList 无法做到的情况 - 泛型数组没有替代品,必须使用。

有效的Java为通用数组敞开了大门,表明可能存在需要通用数组的情况。

我一直在使用ArrayList没有任何缺点,想不出这样的情况。

腾讯网.

注意:我看过这些:

以及其他一些讨论。


答案 1

一些要点:

  • 如果你有一些“遗留”库,那么你就绑定到他们使用的类型。这可以是数组。

  • 如果处理本机代码,则数组将是与本机代码交换数据的更自然的方式。

  • 如果您访问二进制数据(例如声音文件或类似文件),则使用数组可能会有所帮助。

  • 如果您处理大量的二进制数据,那么数组可能会更有效。

因此,数组可能有用的原因有很多(特别是对于基元类型)。

如果只处理对象,则大多数情况下使用 .List


答案 2

我会说Bloch意味着方便而不是必要,数组是更简单的结构,更容易处理。

作为一种数据结构,从功能的角度来看,可以与数组互换。ArrayList

数组显然在内存方面更精简,但需要额外的努力来获得一些基本功能(即,当原始数组不够大以容纳新元素时,手动调整数组大小),但运行时(类)已经提供了其他功能。Arrays

ArrayLists由实际数组支持,因此对于搜索和排序等常见操作(使用相同的算法时),性能方面没有太大差异。Object