我遇到这个错误,我不明白为什么。
我是Java的初学者,但我可以理解for-each循环仅适用于可迭代对象。在这里,我想将类SetOfObjects
创建为ArrayList<SubObject>
。在toString
方法中,循环没有问题,但是在myFunction
中,我得到了错误。
有人可以告诉我我在做什么错吗?
public class SetOfObjects {
private ArrayList<SubObject> setOfObjects;
public SetOfObjects(ArrayList<SubObjects> arr){
this.setOfObjects = arr;
}
@Override
public String toString() {
String finalString = "";
for (SubObject obj : setOfObjects) {
finalString += obj.toString();
}
return finalString;
}
public SetOfObjects myFunction(SetOfObjects aSet){
for (SubObject obj : aSet) { <----ERROR
//do something
}
}
最佳答案
SetOfObjects
不实现Iterable<? extends SubObject>
(也不是数组)。从JLS 14.14.2:
表达式的类型必须是Iterable或数组类型(第10.1节),否则会发生编译时错误。
要么迭代aSet.setOfObjects
(假设这是您实际上要迭代的内容):
for (SubObject obj : aSet.setOfObjects) {
或者让
SetOfObjects
实现Iterable<SubObject>
:class SetOfObjects implements Iterable<SubObject> {
// ...
@Override public Iterator<SubObject> iterator() {
return setOfObjects.iterator();
}