В Java мне нужно вернуть Iterator из моего метода. Мои данные поступают из другого объекта, который обычно может дать мне итератор, поэтому я могу просто вернуть его, но в некоторых случаях базовые данные равны нулю. Для согласованности я хочу вернуть "пустой" итератор в этом случае, чтобы мои вызывающие лица не тестировали значение 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>)
тоже не работает.