У меня есть переменная d которую пользователь задает сам, она принимает значения от 1 до 99, каждое число должно исполнять свою роль, например если 1 вывести в Toast уведомление , если 88 то уже что-то другое , как лучше такое сделать? Если не использовать 99 if
Вам следует использовать оператор switch
:
switch(intVariable) {
case 1:
// действие;
break;
case 2:
// действие;
break;
case 3:
// действие;
break;
//...
case 99:
// действие;
break;
}
Это если все действия разные и не зависят от значения переменной(именно действия, а не их выполнение). Если все действия однотипные - возможно, их можно оптимизировать.
Можно сделать так, как предлагает Stranger. С Java 8 можно использовать лямбды:
Сначала создаем Map<Integer, Consumer> switchMap
, или с каким нибудь другоим функциональным интерфейсом(сейчас - Consumer
), зависит от действий, пишите в комментариях какие конкретно действия нужно сделать, я подкорректирую код.
От ФИ зависит то, какое именно действие будет - возвращающее значение, не возвращающее значение, какое именно будет возвращаться значение, сколько параметров приниматься, и т.п. Действие - это все что угодно, что можно написать в обычном методе
Заполняем его лямбдами:
switchMap.put(1, m -> System.out.println("Введена "+m+", проверка проверка"));
//...
switchMap.put(99, m -> System.out.println("Введена "+m+", (: "));
А потом просто вызывать switchMap.get(myIntVariable).accept(myIntVariable);
.
Я бы сделал как-то так...
Вместо чисел лучше использовать перечисления enum
, это добавляет в код читабельность, куда понятнее когда встречаешь название действия, чем его порядковыq номер
Типы событий:
public enum HandlerType {
ALPHA,
BETA,
GAMMA,
DELTA
}
Класс с обработчиками:
public class Handlers extends HashMap<HandlerType, Runnable> {
public void run(HandlerType t){
Runnable handler = get(t);
if (null == handler)
return;
get(t).run();
}
}
Вариант использования:
public static void main(String[] args) {
Handlers handlers = new Handlers();
handlers.put(HandlerType.ALPHA, () -> {
System.out.println("running ALPHA");
});
handlers.put(HandlerType.BETA, () -> {
System.out.println("running BETA");
});
handlers.put(HandlerType.GAMMA, () -> {
System.out.println("running GAMMA");
});
handlers.put(HandlerType.DELTA, () -> {
System.out.println("running DELTA");
});
handlers.run(HandlerType.ALPHA);
handlers.run(HandlerType.BETA);
handlers.run(HandlerType.GAMMA);
handlers.run(HandlerType.DELTA);
}
Результат:
running ALPHA
running BETA
running GAMMA
running DELTA
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите, пожалуйста, если не сложно, как правильно написать скрипт, чтобы при выборе региона отображались города только этого региона,...