Java迭代器在一个参数化类型的空集合上。

9 浏览
0 Comments

Java迭代器在一个参数化类型的空集合上。

在Java中,我需要从我的方法中返回一个迭代器。我的数据来自另一个对象,通常可以给我一个迭代器,所以我可以直接返回它,但在某些情况下,底层数据为null。为了保持一致性,我希望在这种情况下返回一个"空"迭代器,这样我的调用者就不必测试null。

我想写这样的代码:

public Iterator iterator() {
   if (underlyingData != null) {
      return underlyingData.iterator();  // 正常工作
   } else {
      return Collections.emptyList().iterator();  // 编译错误
   }
}

但是Java编译器抱怨返回的是Iterator而不是Iterator。强制转换(Iterator)也不起作用。

0