我写了简单的课程:
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>
或者我错过了什么?
答案 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();
}
// ...
}