在Java中,我需要从我的方法返回一个Iterator.我的数据来自另一个通常可以给我一个迭代器的对象,所以我可以返回它,但在某些情况下,底层数据为null.为了保持一致性,我希望在这种情况下返回一个"空"迭代器,这样我的调用者就不必测试null.
我想写一些类似的东西:
public Iterator<Foo> iterator() {
if (underlyingData != null) {
return underlyingData.iterator(); // works
} else {
return Collections.emptyList().iterator(); // compiler error
}
}
Run Code Online (Sandbox Code Playgroud)
但Java编译器抱怨返回Iterator<Object>而不是Iterator<Foo>.施法(Iterator<Foo>)也不起作用.