Не знаете, как я собираюсь атаковать это.Значение возвращаемого переключателя на основе строки
В принципе, у меня есть ввод переменной длины, один или несколько раз, что вызовет действие. Это от ввода ввода, файла и т. Д.
Я понятия не имею, по каким и каким образом это можно решить. Было бы лучше, если бы функция возвращала int
, которые соответствуют public static final int FOO = 1;
, enum
, другим способом?
То, что я как сейчас серия, если заявления, как в:
if (str.equals("foo") || str.equals("F")) {
blah;
} else if (str.equals("beach")) {
more blah;
}
Является ли это хорошо, как любой, или есть способ лучше? У вас был быстрый взгляд на enum
, но кажется, что это больше для него, то в частности. C. Вероятно, это неправильно, но будет ли это что-то в этом направлении?
class Mother
{
HappyCamping() {
switch (ValInput(str)) {
case FOO: do fo; break;
case BAR: do bar; break;
case BAZ: do fo bar: break
...
}
private enum ValInput(String str)
{
FOO("foo"), BAR("bar"), BAZ("baz");
private int value;
private ValInput(String str) {
if (str.equals("blah"))
this.value = 1;
...
}
}
}
Точка, имеющая более чистый подход и выделяющая «синтаксический анализ» из основной процедуры. Что было бы здесь хорошо?
Я считаю, нет, но просто чтобы быть уверенным, вы используете Java 7? Вы можете использовать операторы 'switch' с объектами' String', если вы есть. – Gamb
@ Gamb: Да, но если это (может) вызвать любые проблемы, я рад узнать. Мне нравится совместимость, так сказать. – Zimzalabim
Это может вызвать проблемы, если ваше приложение должно быть брошено в среду Java 6. Это и многие другие вещи, специфичные для Java 7, если вы не работаете с установкой Java 6. Я бы придерживался перечислений, если вы так беспокоитесь о совместимости * назад. Если перечисления не могут использоваться в контексте, где у вас есть определенный набор параметров, для чего они хороши? Тем не менее, если у вас появятся новые возможности в будущем, вы можете подумать о том, чтобы остаться с 'if's, но так как вам все равно придется менять код, это ваш звонок. – Gamb