Java数组和列表的共同祖先
2022-09-02 12:24:11
在 .NET 中,数组和列表都以 Enumerable 作为祖先,因此接受 Enumerable 作为参数的方法可以同时接收数组和 list 作为其参数。我想知道Java中是否有类似的东西?
在 .NET 中,数组和列表都以 Enumerable 作为祖先,因此接受 Enumerable 作为参数的方法可以同时接收数组和 list 作为其参数。我想知道Java中是否有类似的东西?
不,Java中没有等效项。我通常建议您设计 API 方法来接收 、 或 。虽然这些排除了直接使用数组调用方法,但您可以使用 非常轻松地包装数组。对于调用方来说,这比将数组指定为方法参数更灵活,后者强制使用单个实现。List<T>
Collection<T>
Iterable<T>
Arrays.asList
我同意这并不理想。
请注意,在 .NET 中,一维数组不仅实现,还实现。IEnumerable<T>
IList<T>
它们没有共同的祖先,但是,有一些方法可以根据需要在两种类型之间转换 -
因此,您可以提供一个重载方法以转换为公共类型 - 即
public void doAll(MyType[] array) {
doAll(Arrays.asList(array));
}
public void doAll(List<MyType> list) {
//... process List here.
}