首选哪种形式:
String my = "Which form shall I use?";
Iterator iter = my.iterator();
或
Iterator<String> iter = my.iterator();
我个人更喜欢前者,但在我的材料中,他们使用后者。
答案 0 :(得分:11)
在后一种形式中,迭代器是强类型的,这是优选的
答案 1 :(得分: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?
VS
Iterator<String> iter = someList.iterator();
String s = iter.next(); // guaranteed typesafe at compile-time.
(但是,String没有实现Iterable<String>
,但我确信你的意思是List<String> my = Arrays.asList("Which form shall I use?")
答案 2 :(得分:5)
后者。泛型参数避免显式强制转换,并帮助您维护类型安全性。但是,String不是Iterable。
答案 3 :(得分:2)
字符串不可迭代?如果你想迭代你需要做的事情:
String my = "Which form shall I use?";
for(char c : my.toCharArray())
System.out.println(c);