Аналогия switch()

275
04 октября 2017, 07:38

Нашёл сборник задач и провешиваю его на java ради интереса. Задач больше 1000. Столкнулся с интересной проблемой.

switch (input) {
        case 1:
            System.out.print(ts.task_1());
            break;
        case 2:
            ts.task_2();
            break;
        case 3:
            ts.task_3();
            break;
        case 4:
            ts.task_4();
            break; //и так далее до 1000

Можно ли как-то изменить подход к реализации класса для вызова задач в большом количества?

Answer 1

Можно воспользоваться рефлексией:

 TS ts;
 Class clazz=ts.getClass();
 if(input==1)
    System.out.print(ts.task_1());
 else {
   //получаем ссылку на метод с именем task_*()
   Method method=clazz.getDeclaredMethod("task_"+input, null); 
   if(method!=null)  //вызываем метод
      method.invoke(ts, null);
 }
READ ALSO
Period, метод normalized(), а что же дни?

Period, метод normalized(), а что же дни?

Метод normalized() из библиотеки javatime

252
IntelliJ Idea не видит метода в классе

IntelliJ Idea не видит метода в классе

Пытаюсь сделать скриншот в тестеИспользую класс FileUtils

401
Подключение JSTL

Подключение JSTL

В buildgradle:

335
NullPointerException java [требует правки]

NullPointerException java [требует правки]

Приветствую, друзья! Возникла странная ситуация, с которой пытаюсь бороться уже пару днейЕсть массив объектов класса Bot (класс самописный)...

274