Вы можете использовать значение типа char
каждый раз, когда допустимо значение типа int
, и (кроме конкатенации строк и двух методов обоих типов) оно работает так же, как int, полученный с помощью
Таким образом, operators['+']
идентичен operators[43]
и аналогичен.
Если вам нужны только *
, +
, -
, /
, выможно использовать массив длины 6 и индексировать его, взяв разницу до *
(который является первым из них):
Operations[] jumptable = {
new Multiplication(), // * = 42 = '*' + 0
new Addition(), // + = 43 = '*' + 1
null, // , = 44
new Subtraction(), // - = 45 = '*' + 3
null, // . = 46
new Division() // / = 47 = '*' + 5
};
char operator = ...;
Operation op = jumptable[operator - '*'];
Конечно, вы всегда можете сделать таблицу настолько большой, насколько это необходимои непосредственно индексировать.