Java数组和列表的共同祖先

2022-09-02 12:24:11

在 .NET 中,数组和列表都以 Enumerable 作为祖先,因此接受 Enumerable 作为参数的方法可以同时接收数组和 list 作为其参数。我想知道Java中是否有类似的东西?


答案 1

不,Java中没有等效项。我通常建议您设计 API 方法来接收 、 或 。虽然这些排除了直接使用数组调用方法,但您可以使用 非常轻松地包装数组。对于调用方来说,这比将数组指定为方法参数更灵活,后者强制使用单个实现。List<T>Collection<T>Iterable<T>Arrays.asList

我同意这并不理想。

请注意,在 .NET 中,一维数组不仅实现,还实现。IEnumerable<T>IList<T>


答案 2

它们没有共同的祖先,但是,有一些方法可以根据需要在两种类型之间转换 -

因此,您可以提供一个重载方法以转换为公共类型 - 即

public void doAll(MyType[] array) {
    doAll(Arrays.asList(array));
}

public void doAll(List<MyType> list) {
    //... process List here.
}

推荐