【发布时间】:2010-10-23 17:17:21
【问题描述】:
在 Java 中,我需要从我的方法中返回一个迭代器。我的数据来自另一个对象,它通常可以给我一个迭代器,所以我可以返回它,但在某些情况下,基础数据为空。为了保持一致性,我想在这种情况下返回一个“空”迭代器,这样我的调用者就不必测试 null。
我想写这样的东西:
public Iterator<Foo> iterator() {
if (underlyingData != null) {
return underlyingData.iterator(); // works
} else {
return Collections.emptyList().iterator(); // compiler error
}
}
但是 Java 编译器抱怨返回 Iterator<Object> 而不是 Iterator<Foo>。投射到 (Iterator<Foo>) 也不起作用。
【问题讨论】:
标签: java collections iterator