Iterator <t>返回Object </t>

时间:2014-02-13 09:48:16

标签: 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>或者我错过了什么?

1 个答案:

答案 0 :(得分:9)

你的班级必须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();
  }

  //  ...
}