微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java迭代器遍历参数化类型的空集合

如何解决Java迭代器遍历参数化类型的空集合

您可以通过以下语法获取Foo类型的空列表:

return Collections.<Foo>emptyList().iterator();

解决方法

在Java中,我需要从我的方法中返回一个Iterator。我的数据来自另一个对象,该对象通常可以给我一个迭代器,因此我可以返回它,但是在某些情况下,基础数据为null。为了保持一致,在这种情况下,我想返回一个“空”迭代器,这样我的调用者就不必测试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>)也不起作用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。