为什么Eclipse API使用Arrays而不是Collections?

rob*_*nst 5 eclipse api eclipse-plugin eclipse-rcp

在Eclipse API中,返回和参数类型主要是数组而不是集合.一个例子是memberson IContainer,返回的方法IResources[].

我很感兴趣为什么会这样.也许它是以下之一:

  1. API是在仿制药泛型可用之前设计的,所以IResource[]优于just Collection或者List
  2. 内存问题,例如ArrayList内部保存一个数组,该数组具有比所需更多的空间(提供有效的实现add),而数组总是只为所需的目标大小构建
  3. 在阵列上添加/删除元素是不可能的,因此迭代是安全的(但仍然需要防御性复制,因为仍然可以更改元素,例如将它们设置为null)

有没有人有任何见解或其他想法为什么API是这样开发的?

Rob*_*ert 1

将此作为答案发布,以便可以接受。

Eclipse 早于泛型,并且他们非常重视 API 稳定性。此外,在 SWT 的低级别,传递数组似乎用于反映正在包装的操作系统 API。一旦你拥有了一堆使用数组的工具,我想保持事物的一致性是有意义的。另请注意,使用反射时,数组不会遇到所有类型擦除问题。

是的,我听说你的集合 api 通常更容易用于动态项目列表。