任何人都可以建议如何重新编写以下Java代码段,如果是这样,为什么它不合适,谢谢!!
try {
int i = 0;
while (true)
a[i++].func();
} catch(ArrayIndexOutOfBoundsException e) {
}
答案 0 :(得分:8)
使用for-each循环:
for(TypeOfArray item : a) {
item.func();
}
或者是一个简单的for循环:
for(int i = 0; i < a.length; i++) {
a[i].func();
}
结果字节码或多或少相同,但我发现 - 每个循环更优雅。您的代码不合适,因为它:
答案 1 :(得分:4)
作为一个很好的一般原则,您不应该使用流量控制的例外。坦率地说,在阵列末端运行只是松懈。
尝试使用“foreach”循环:
for (IHasFunc hasFunc : a) {
hasFunc.func();
}
答案 2 :(得分:0)
不要使用异常来结束循环。使用a.length
确定尺寸。
答案 3 :(得分:0)
如果您使用for
循环:
for (YourObject obj : a) {
obj.func();
}
然后你就不需要索引变量了。
如上所述,异常对流量控制不利。它们的创建成本很高,并且难以追踪它们的执行流程。