switch
Javaでは、次のコードは、対応するかさばるステートメントよりもはるかにクリーンで保守が簡単です。
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
範囲外の場合(例外は処理されますが)、望ましくない何かが発生しますか?
可能であれば、もっとクリーンなものを提案しますか?