在集合的迭代器中,有以下结构(以Vector举例)
/*Vector声明*/
public class Vector<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
/*Vector中的迭代器定义*/
public synchronized Iterator<E> iterator() {
return new Itr();
}
平常在使用集合迭代器时的写法:
List<String> vector = new Verctor<>();
//vector添加一些字符串
vector.add("Id");
vector.add("name");
vector.add("Gender");
//迭代器这里的String为什么不可以类型推断出来呢?
Iterator<String> it = vector.iterator();
在上面迭代器中,vector.iterator()的返回值在声明vector时已经指定了其返回类型为Iterator<String>为什么在创建迭代器时还要这样写:Iterator<String> it = vector.iterator();而不这样写呢:Iterator<> it = vector.iterator()或者Iterator it = vector.iterator()。(在菱形中的String为什么不能推断出来呢?)
因为推断是用左边推断右边