Java ListIterator/Iterator类型

Cem*_*mre 3 java iterator

我有一个代码片段,如下所示:

ArrayList<Integer>    a = new ArrayList<Integer>();
ListIterator<Integer> p = a.listIterator();
Run Code Online (Sandbox Code Playgroud)

但是,我注意到你并不真的需要为ListIterator指定,所以代码在没有它的情况下工作相同:

ArrayList<Integer>    a = new ArrayList<Integer>();
ListIterator p = a.listIterator();
Run Code Online (Sandbox Code Playgroud)

我认为Iterator也是如此.所以我的问题是我何时必须指定ListIterator/Iterator的类型?它是可选的,可以使用更冗长吗?

Hov*_*els 5

为迭代器指定泛型类型的原因是,您可以提取它检索的项目而不进行强制转换.这增加了一点编译时类型的安全性,没有额外的显着开销,所以我认为没有理由不这样做.