В 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
находится вне диапазона (хотя исключение обрабатывается)?
Если возможно, предложите что-нибудь почище?