我该如何申报迭代器?

The*_* do 2 java iterator

哪种形式是首选:

String my = "Which form shall I use?";
Iterator iter = my.iterator();
Run Code Online (Sandbox Code Playgroud)

要么

Iterator<String> iter = my.iterator();
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢前者,但在我的材料中,他们使用后者.

ob1*_*ob1 11

在后一种形式中,迭代器是强类型的,这是优选的


aio*_*obe 7

您应该在API提供泛型时使用泛型.也就是说,后一种选择是优选的.

Iterator iter = someList.iterator();
String s = (String) iter.next();  // prone to class cast exceptions.
                                  // What if someone for instance accidentally
                                  // put a CharSequence in the list?
Run Code Online (Sandbox Code Playgroud)

VS

Iterator<String> iter = someList.iterator();
String s = iter.next();           // guaranteed typesafe at compile-time.
Run Code Online (Sandbox Code Playgroud)

(Iterable<String>但是字符串没有实现,但我确定你的意思是这样的List<String> my = Arrays.asList("Which form shall I use?")


Mat*_*hen 5

后者.泛型参数避免显式强制转换,并帮助您维护类型安全性.但是,String不是Iterable.