Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迭代器<;T>;返回对象_Java_Generics_Iterator - Fatal编程技术网

Java 迭代器<;T>;返回对象

Java 迭代器<;T>;返回对象,java,generics,iterator,Java,Generics,Iterator,我写了一个简单的类: 公共类报表实现了Iterable{ 私有ObservableList items=FXCollections.observableArrayList(); // ... 公共可观察列表getItems(){ 退货项目; } 公共迭代器迭代器{ 返回items.iterator(); } // ... } 但当我尝试像这样使用foreach循环时,我得到了不兼容类型错误: 报告=新报告() 对于(FINR记录:报告){ // ... } 这段代码工作得很好,但我想要更干

我写了一个简单的类:

公共类报表实现了Iterable{
私有ObservableList items=FXCollections.observableArrayList();
// ...
公共可观察列表getItems(){
退货项目;
}
公共迭代器迭代器{
返回items.iterator();
}
//  ...
}
但当我尝试像这样使用foreach循环时,我得到了不兼容类型错误:

报告=新报告()
对于(FINR记录:报告){
// ...
}
这段代码工作得很好,但我想要更干净的代码,我不明白为什么以前的代码返回对象

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

这是java的特性,所以它创建了
Iterator
而不是
Iterator
,还是我遗漏了什么?

您的类必须
实现Iterable

公共类报表实现了Iterable
{
私有ObservableList items=FXCollections.observableArrayList();
// ...
公共可观察列表getItems(){
退货项目;
}
公共迭代器迭代器(){
返回items.iterator();
}
//  ...
}
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();
  }

  //  ...
}