2010-09-30 31 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返回枚舉和要求集合