java返回泛型特定对象的泛型列表的迭代器

时间:2016-10-02 06:14:10

标签: java generics iterator

在java方法中,我必须返回以下内容:

 Iterator<List<Person>>

我编写了创建新列表的方法,将人员添加到其中:

LinkedList<Person> list = new LinkedList<Person>();
...
list.add(new Person(...))
...

但是当我需要返回迭代器时,因为我有方法签名,我很困惑。

返回:

return list.iterator();

导致编译错误:

Type mismatch: cannot convert from Iterator<Person> to Iterator<List<Person>>

为了遵循方法签名,我应该在方法中更改什么?

由于

2 个答案:

答案 0 :(得分:0)

Iterator的类型参数是它将返回的类型,而不是将使用迭代器的集合的类型。

在您的情况下,请返回Iterator<Person>

答案 1 :(得分:0)

这种方法无济于事,但不这么认为。

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class Exam2 {

    public static Iterator<List<Person>> getIterator(){
        LinkedList<Person> list = new LinkedList<Person>();
        list.add(new Person());

        LinkedList<List<Person>> Parentlist = new LinkedList<List<Person>>();
        Parentlist.add(list);

        return Parentlist.iterator();
    }
    public static void main(String[] args) {
        System.out.println( getIterator() );
    }
}

class Person{

}