有代码:
List<Integer> al = new ArrayList<>() ;
Iterator iterator = al.iterator();
System.out.println(iterator.getClass().getName());
我明白了:
java.util.ArrayList$Itr
这是什么意思:“ ArrayList $ Itr”?
我在这一行中得到了什么Iterator实现?
Iterator iterator = al.iterator();
答案 0 :(得分:7)
在ArrayList
类中,定义了以下内部类:
private class Itr implements Iterator<E> {...}
al.iterator()
返回该类的实例,其全名是java.util.ArrayList$Itr
。
public Iterator<E> iterator() {
return new Itr();
}
答案 1 :(得分:2)
java.util.ArrayList
在private class Itr implements Iterator<E>
内定义了内部ArrayList
,当您调用list.iterator()
方法时会返回该内部{1>。
请参阅java.util.ArrayList
的内部实现。
答案 2 :(得分:0)
这是什么意思:“ ArrayList $ Itr”?
这意味着Itr
是ArrayList
的内部类。
我在这一行中得到什么迭代器实现?
您将获得的实现是java.util.ArrayList$Itr
。但是您不应该依赖于此特定的实现,因为它不是ArrayList
API的一部分,并且可能在Java的未来版本中发生变化。您唯一可以依靠的就是获得Iterator
。