为什么EclipseAPI使用数组而不是集合?
在EclipseAPI中,返回和参数类型主要是数组而不是集合。一个例子是为什么EclipseAPI使用数组而不是集合?,eclipse,api,eclipse-plugin,eclipse-rcp,Eclipse,Api,Eclipse Plugin,Eclipse Rcp,在EclipseAPI中,返回和参数类型主要是数组而不是集合。一个例子是IContainer上的members方法,它返回IResources[] 我对为什么会这样感兴趣。可能是以下情况之一: 这些API是在泛型可用之前设计的,因此IResource[]比仅Collection或List 内存问题,例如,ArrayList内部包含的数组空间大于所需空间(以提供add的有效实现),而数组总是根据所需的目标大小构建的 无法在数组中添加/删除元素,因此可以安全地进行迭代(但仍然需要防御性复制,因为仍然
IContainer
上的members
方法,它返回IResources[]
我对为什么会这样感兴趣。可能是以下情况之一:
IResource[]
比仅Collection
或List
ArrayList
内部包含的数组空间大于所需空间(以提供add
的有效实现),而数组总是根据所需的目标大小构建的null
)是否有人对API为何以这种方式开发有任何见解或其他想法?将此作为答案发布,以便可以接受
Eclipse早于泛型,它们非常重视API的稳定性。此外,在低级别的SWT中,传递数组似乎用于反映正在包装的操作系统API。一旦有了一系列使用阵列的工具,我想保持一致是有意义的。还要注意的是,在使用反射时,数组不会遇到所有类型擦除问题
是的,我听说集合api通常更容易用于动态项目列表。只是猜测,但它可能是在Java引入泛型之前创建的,所以当时唯一的类型化集合是数组。Eclipse早于泛型,他们非常重视api的稳定性。此外,在低级别的SWT中,传递数组似乎用于反映正在包装的操作系统API。一旦有了一系列使用阵列的工具,我想保持一致是有意义的。还要注意的是,在使用反射时,数组不会出现所有类型擦除问题。@Robert您应该将您的注释作为答案发布。它就在上面。@Robert请将您的评论作为答案发布,这样我就可以接受了。顺便说一句,我对继续在新API中使用数组的主要不满是它到处都需要使用
System.arrayCopy
和collection.toArray(新的IResource[collection.size()])
。