5

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

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

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

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

4

1 回答 1

1

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

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

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

于 2012-07-26T13:08:19.327 回答