任何人都可以建议如何重新编写以下 Java 代码片段,如果是这样,为什么它不合适,谢谢!
try {
int i = 0;
while (true)
a[i++].func();
} catch(ArrayIndexOutOfBoundsException e) {
}
任何人都可以建议如何重新编写以下 Java 代码片段,如果是这样,为什么它不合适,谢谢!
try {
int i = 0;
while (true)
a[i++].func();
} catch(ArrayIndexOutOfBoundsException e) {
}
使用for-each循环:
for(TypeOfArray item : a) {
item.func();
}
或者一个简单的 for 循环:
for(int i = 0; i < a.length; i++) {
a[i].func();
}
生成的字节码或多或少相同,但我发现 for-each 循环更优雅。您的代码不合适,因为它:
作为一个好的一般原则,您不应该使用异常来进行流控制。坦率地说,跑出数组的末端只是懒惰。
尝试使用“foreach”循环:
for (IHasFunc hasFunc : a) {
hasFunc.func();
}
如果您这样使用for
循环:
for (YourObject obj : a) {
obj.func();
}
那么你就避免了对索引变量的要求。
如前所述,异常不利于流量控制。创建它们的成本很高,并且很难跟踪它们的执行流程。
不要使用异常来结束循环。用于a.length
确定大小。