这个java代码段可以重新编写吗?
有人能建议如何重新编写下面的Java代码段吗?如果有,为什么不合适,谢谢这个java代码段可以重新编写吗?,java,Java,有人能建议如何重新编写下面的Java代码段吗?如果有,为什么不合适,谢谢 try { int i = 0; while (true) a[i++].func(); } catch(ArrayIndexOutOfBoundsException e) { } 使用循环: 或者,一个简单的for循环: for(int i = 0; i < a.length; i++) { a[i].func(); } for(int i=0;i
try {
int i = 0;
while (true)
a[i++].func();
} catch(ArrayIndexOutOfBoundsException e) {
}
使用循环:
或者,一个简单的for循环:
for(int i = 0; i < a.length; i++) {
a[i].func();
}
for(int i=0;i
结果字节码或多或少是相同的,但我发现每个循环都更优雅。您的代码不合适,因为它:
- 将异常用于流控制
- 使用while(true)循环(如果有其他方法,请不要使用)
不要使用异常结束循环。使用
a.length
确定大小。如果将用于循环,则:
for (YourObject obj : a) {
obj.func();
}
这样就避免了对索引变量的要求
如前所述,异常不利于流控制。创建它们的成本很高,跟踪它们的执行流程也很困难。这是家庭作业吗?你知道这是在做什么吗?如果是这样的话,你必须知道为什么它是不合适的……这在本手册第42项中有所涉及。
for (IHasFunc hasFunc : a) {
hasFunc.func();
}
for (YourObject obj : a) {
obj.func();
}