【发布时间】:2011-09-09 08:06:45
【问题描述】:
在 Java 中,我发现以下代码比相应的庞大的 switch 语句更简洁且更易于维护:
try {
selectedObj = new Object[] {
objA,
objB,
objC,
objD,
}[unvalidatedIndex];
} catch (ArrayIndexOutOfBoundsException e) {
selectedObj = objA;
}
反对
switch (unvalidatedIndex) {
case 0:
selectedObj = objA;
break;
case 1:
selectedObj = objB;
break;
case 2:
selectedObj = objC;
break;
case 3:
selectedObj = objD;
break;
default:
selectedObj = objA;
}
前者被认为是可接受的做法吗?我知道这不是最有效的,因为它涉及分配数组和捕获异常。当unvalidatedIndex 超出范围时(尽管处理了异常),是否会导致不受欢迎的事情?
如果可能的话,你会推荐一些更清洁的东西吗?
【问题讨论】:
标签: java switch-statement indexoutofboundsexception anonymous-arrays