我遇到了这个错误,我不明白为什么。
我是 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 :
The type of the Expression must be Iterable or an array type (§10.1), or a compile-time error occurs.
要么迭代aSet.setOfObjects
(假设这是您实际想要迭代的内容):
for (SubObject obj : aSet.setOfObjects) {
或制作SetOfObjects
实现 Iterable<SubObject>
:
class SetOfObjects implements Iterable<SubObject> {
// ...
@Override public Iterator<SubObject> iterator() {
return setOfObjects.iterator();
}
关于java - for-each 不适用于表达式类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47940923/