JAVA中for循环的这种写法怎么理解?
UIManager.LookAndFeelInfo[]infos=UIManager.getInstalledLookAndFeels();for(UIManager.L...
UIManager.LookAndFeelInfo[] infos =UIManager.getInstalledLookAndFeels();
for (UIManager.LookAndFeelInfo info : infos)
makeButton(info.getName(),info.getClassName());
以上为core java中的一个代码片段
在此书中 经常看到 for( : ) 这样的for循环,
请问这样的for循环,在冒号两边的代码各是什么条件? 展开
for (UIManager.LookAndFeelInfo info : infos)
makeButton(info.getName(),info.getClassName());
以上为core java中的一个代码片段
在此书中 经常看到 for( : ) 这样的for循环,
请问这样的for循环,在冒号两边的代码各是什么条件? 展开
1个回答
展开全部
这是JAVA1.5 增强的for 循环的新特性。。(enhanced for loop)
所谓“增强的for 循环”,主要也是针对容器的。使用该项特性时,开发者可以将“利用iterator
遍历容器”的逻辑交给编译器来处理。例如下列代码:
void cancelAll(Collection c) {
for (Iterator i = c.iterator(); i.hasNext(); ) {
TimerTask tt = (TimerTask) i.next();
tt.cancel();
}
}
可以用增强的for 循环改写为:
void cancelAll(Collection c) {
for (Object o : c)
((TimerTask)o).close();
}
编译器判断对象c 是一个Collection 子对象(即是容器)之后,就会允许使用增强的for 循环
形式,并自动取到c 的迭代器,自动遍历c 中的每个元素。
可以看到,上面的代码中仍然有一个强制类型转换(((TimerTask)o).close();)。实际上,这
项特性应该普遍地与泛型结合,以获得最大的利益。结合泛型之后,上述代码变成:
void cancelAll(Collection c) {
for (TimerTask task : c)
task.cancel();
}
所谓“增强的for 循环”,主要也是针对容器的。使用该项特性时,开发者可以将“利用iterator
遍历容器”的逻辑交给编译器来处理。例如下列代码:
void cancelAll(Collection c) {
for (Iterator i = c.iterator(); i.hasNext(); ) {
TimerTask tt = (TimerTask) i.next();
tt.cancel();
}
}
可以用增强的for 循环改写为:
void cancelAll(Collection c) {
for (Object o : c)
((TimerTask)o).close();
}
编译器判断对象c 是一个Collection 子对象(即是容器)之后,就会允许使用增强的for 循环
形式,并自动取到c 的迭代器,自动遍历c 中的每个元素。
可以看到,上面的代码中仍然有一个强制类型转换(((TimerTask)o).close();)。实际上,这
项特性应该普遍地与泛型结合,以获得最大的利益。结合泛型之后,上述代码变成:
void cancelAll(Collection c) {
for (TimerTask task : c)
task.cancel();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询