java - Iterator<T> 返回对象

标签 java generics iterator

我写了简单的类:

public class Report<T> implements Iterable {
  private ObservableList<T> items = FXCollections.observableArrayList();
  // ...

  public ObservableList<T> getItems() {
    return items;
  }

  public Iterator<T> iterator {
    return items.iterator();
  }

  //  ...
}

但是当我尝试像这样使用 foreach 循环时,我得到了类型不兼容的错误:

Report<FinRecord> report = new Report<>()
for (FinRecord r : report) {
    // ...
}

这段代码工作正常,但我想要更简洁的代码,但我不明白为什么以前的代码会返回 Object。

for (FinRecord r : report.getItems()) {
    // ...
}    

是不是java的特性,所以创建了Iterator不是 Iterator<T>或者我遗漏了什么?

最佳答案

你的类(class)必须implements Iterable<T> .

public class Report<T> implements Iterable<T>
{
  private ObservableList<T> items = FXCollections.observableArrayList();
  // ...

  public ObservableList<T> getItems() {
    return items;
  }

  public Iterator<T> iterator() {
    return items.iterator();
  }

  //  ...
}

关于java - Iterator<T> 返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21750556/

相关文章:

php - 使用 SPL ArrayObject、ArrayIterator、RecursiveArrayIterator 而不是常规数组有什么好处?

java - 从servlet调用jsp文件

Java 一个语句中有两个等号?

java - 通配符编译时错误

oop - 在 TypeScript 中扩展 React 组件

c++ - 如何使用运行参数从模板实例化对象数组

java - 为什么方法访问似乎比字段访问更快?

java - JAXB:对具有相同值的不同 XML 元素进行解码

c# - 为什么在有泛型返回值时编译器不能推断出泛型参数?

java - 调用所有集合成员的删除方法