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

时间:2012-07-23 13:14:15

标签: eclipse api eclipse-plugin eclipse-rcp

在Eclipse API中,返回和参数类型主要是数组而不是集合。一个示例是members上的IContainer方法,它返回IResources[]

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

  1. API是在提供泛型泛型之前设计的,因此IResource[]优于CollectionList
  2. 内存问题,例如ArrayList内部拥有一个数组,该数组具有比所需更多的空间(以提供add的有效实现),而数组总是仅为所需的目标大小构建
  3. 无法在数组上添加/删除元素,因此迭代是安全的(但仍然需要进行防御性复制,因为仍然可以更改元素,例如将它们设置为null
  4. 有没有人有任何见解或其他想法为什么以这种方式开发API?

1 个答案:

答案 0 :(得分:1)

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

Eclipse早于泛型,他们对API稳定性非常认真。此外,在较低级别的SWT传递数组似乎用于反映被包装的操作系统API。一旦你有一堆使用Arrays的工具,我想保持一致是有意义的。另请注意,使用反射时,数组不会受到所有类型擦除问题的影响。

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