为什么枚举不可迭代?
2022-08-31 14:39:27
作为使用枚举和增强的 for 循环的简单而干净的方式,请使用 java.util.Collections.list 转换为 ArrayList。
for (TableColumn col : Collections.list(columnModel.getColumns()) {
(javax.swing.table.TableColumnModel.getColumns 返回 Enumeration。
请注意,这可能效率略低。
实现 没有意义。 是 的工厂方法。 类似于 ,并且只维护单个枚举的状态。Enumeration
Iterable
Iterable
Iterator
Enumeration
Iterator
因此,在尝试将 包装为 .如果有人给我一个,我会假设我可以反复调用它,创建任意数量的实例,并独立迭代每个实例。包装将不履行本合同;不要让包装的代码从你自己的代码中逃脱。(顺便说一句,我注意到Java 7的DublineStream
以这种方式违反了预期,也不应该被允许“逃避”。Enumeration
Iterable
Iterable
iterator()
Iterator
Enumeration
Enumeration
Enumeration
就像一个 ,而不是一个 .A 是 。An 不是。Iterator
Iterable
Collection
Iterable
Iterator
你不能这么做:
Vector<X> list = …
Iterator<X> i = list.iterator();
for (X x : i) {
x.doStuff();
}
因此,这样做是没有意义的:
Vector<X> list = …
Enumeration<X> i = list.enumeration();
for (X x : i) {
x.doStuff();
}
没有等效项。可以在不破坏任何内容的情况下添加它以在for循环中工作,但是有什么意义呢?如果您能够实现这个新接口,为什么不直接实现呢?Enumerable
Iterable
Enumerable
Iterable