for-each不适用于表达类型

时间:2017-12-22 11:41:17

标签: java

我有这个错误而且我不明白为什么。 我是Java的初学者,但我可以理解 - 每个循环仅适用于可迭代对象。在这里,我想将课程Options +FollowSymLinks RewriteEngine On RewriteBase /mydemo/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d 创建为SetOfObjects。在ArrayList<SubObject>方法中,我对循环没有问题但在toString中我得到了错误。 有人能告诉我我做错了什么吗?

myFunction

2 个答案:

答案 0 :(得分:4)

SetOfObjects未实现Iterable<? extends SubObject>(也不是数组)。来自JLS 14.14.2

  

Expression的类型必须是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();
  }

答案 1 :(得分:0)

public SetOfObjects myFunction(**SetOfObjects aSet**){
    for (SubObject obj : aSet) {    <----ERROR
        //do something
    }

您正在尝试使用Object迭代循环,而应该是    对象列表。    它必须是

public SetOfObjects myFunction(List<SetOfObjects> aSet){
    for (SubObject obj : aSet) {    
        //do iteration 
    }