Выполнение процедуры по наименованию, задаваемому переменной

Рейтинг: 1Ответов: 1Опубликовано: 22.04.2015

Доброго времени суток! Необходимо реализовать в сервисе выполнение определенных процедур при передаче их наименований в intent для BroadcastReceiver. То есть, сервису передается intent вида:

Intent intent = new Intent(<Наименование акции>);
intent.putExtra("operation", <Наименование процедуры>);

Сервис, в свою очередь, на основании переданной "operation" выполняет необходимую функцию.

Хотелось бы знать, есть ли какой-либо другой вариант, кроме if(operation.equals(<Наименование процедуры>){<Выполнение нужной процедуры>} и как его реализовать.

Ответы

▲ 2Принят

Да без проблем иcпользуйте java.lang.reflect.Method У меня было примерно так реализовано в одном проекте.

 import java.lang.reflect.Method;

 public class ReflectAction {

 public void startAction(String methodName, long arg1) {
         Method method;
         try {
              method = this.getClass().getDeclaredMethod(methodName,long.class);
            } catch (SecurityException e) {
              // ...
            } catch (NoSuchMethodException e) {
              // ...                
                Log.d("MyLogs", " no Such Method");
            }

         try {
              method.invoke(this, arg1);
            } catch (IllegalArgumentException e) {
            } catch (IllegalAccessException e) {
            } catch (InvocationTargetException e) {             
            }        
     }

     public void function1(long arg1) {
     }

     public void function2(long agr1) {
     }

     public void function3(long arg3) {
     }   
     }