参数化类型的空集合上的 Java 迭代器
2022-09-01 09:08:52
在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>)