有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

迭代器不在Java中迭代类

import java.util.*;

class Person{
    private String name;
    private int age;
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
}


public class Iterator {
    public static void main(String args[]) {
        Collection<Person> collection = new ArrayList<Person>();
        collection.add(new Person("Komal",45));
        collection.add(new Person("Rahul",34));
        collection.add(new Person("Rakesh",27));
        Iterator iterator = collection.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

输出:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: The type Iterator is not generic; it cannot be parameterized with arguments at java_classes.Iterator.main(Iterator.java:37)

那么,当我运行上面提到的代码时,我将如何使用迭代器对类person进行迭代,以显示错误


共 (2) 个答案

  1. # 1 楼答案

    问题是你的类名。您将其命名为“迭代器”,因此编译器认为您引用的是您创建的这个类,而不是java。util。迭代器类,在这里: 迭代器迭代器=集合。迭代器(); 你可以把它改成 JAVAutil。迭代器迭代器=集合。迭代器()

    或者只是重命名您创建的类(也更改文件名,因为它是公共类)

  2. # 2 楼答案

    你的类名是Iterator,这是java.util.Iterator。您可以重命名您的类。或者,您可以将Iterator iterator = collection.iterator();更改为

    java.util.Iterator<Person> iterator = collection.iterator();
    

    您的示例没有指定它应该是的Iterator类型(并且您自己的Iterator不是泛型,因此如果您指定了Iterator<Person>,那么您发布的Iterator类将出现不同的错误)