2010-09-30 45 views
2

为什么java.util.Collections.list仅适用于Enumeration,但不适用于Iterator(或Iterable)?或者为什么Iterator(或Iterable)没有这个功能的超载?有没有其他方法可以做到这一点?这是什么原因?Java:用于迭代器的Collections.list/iterable

+0

其中Collections.list?它是否是'java.util.Collections'的一部分? – 2010-09-30 15:06:20

+0

http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#list(java.util.Enumeration) – 2010-09-30 15:07:12

回答

3

没有人真正的答案是还没有新的API之间的互操作性,所以我来到这里:

当什么介绍了,有可能是没有Iterable呢。现在它已经过时了(大多数Collection实现的构造函数提供了相同的东西),并且只是为了向后兼容而停留在那里。

1

从JavaDoc的:

返回包含由在它们被枚举返回的顺序指定的枚举返回的元素的数组列表。此方法提供传统API(返回枚举)和需要收集的新API之间的互操作性。

如果您有一个集合并希望根据该集合创建新列表,则可以使用构造函数或addAll()方法。这种方法与集合框架提供的适配器相似。

对于自定义迭代,您可以使用增强for循环将迭代器返回的元素复制到现有列表。

+0

是的,但为什么没有'Iterator'或'Iterable '? – Albert 2010-09-30 15:07:59

+0

我知道我可以做些什么来解决这个问题。但我的问题不在于此。这是关于:为什么没有这个功能,如果有一个'枚举'? – Albert 2010-09-30 15:10:23

+0

@Albert - 我会问另一种方式:为什么他们实现了'list'方法呢?通常在这样一个突出的实用程序类中不需要这种专门的方法。即使使用java 1.4,它也只需要2-4行代码。 – 2010-09-30 15:14:52

0

它的目的是要继承的API返回枚举和要求集合