为什么italor对象不是用Java中的列表集合的new关键字创建的

bra*_*orm 0 java iterator object instance new-operator

我遇到了这段代码,从给定的链表中删除了偶数长度的字符串我不明白为什么迭代器对象itr没有用new关键字实例化.这是代码..

public static void removeEvenLength(List<String> list) {
     Iterator<String> itr= list.iterator();
     while (itr.hasNext()) {
         String element=itr.next();
         if (element.length()%2==0) {
             i.remove();
     }
   }
}       
Run Code Online (Sandbox Code Playgroud)

这是否意味着迭代器方法是static,它只返回一个新iterable objectlistas作为它field.有人可以提供一个或多个例子,其中我在Java中遇到类似的实例化方法而不是单例构造函数.谢谢

Jon*_*eet 9

这是否意味着迭代器方法是静态的,它只返回一个新的可迭代对象,其中列表作为其字段.

不,这是一个实例方法.它只返回对a的引用Iterator<String>.因此,该iterator()方法的主体可能包含一个new语句(尽管它可能会依次调用其他语句).让我们暂时从迭代器和泛型中取出它 - 类似的情况是:

class Bar {}

class Foo {
    Bar createBar() {
        return new Bar();
    }
}

public class Test {
    public static void main(String[] args) {
        Foo foo = new Foo();
        Bar bar = foo.createBar();
    }
}
Run Code Online (Sandbox Code Playgroud)

相同模式:返回不同类型的新实例的实例方法.