Reflection es usado para invocar un método cuando el nombre del metodo es modificado en ejecución

import java.lang.reflect.Method;

public class Demo {

public int resta(int num, int num2) {
return num-num2;
}
public int suma(int num, int num2) {
return num+num2;
}

public int mul(int num, int num2) {
return num*num2;
}

public int div(int num, int num2) {
return num/num2;
}

public static void main(String[] args) {
try {
Class cla=Class.forName(“Demo”);
Integer[] entrada={new Integer(2),new Integer(6)};
Class[] clp=new Class[2];
clp[0]=Integer.TYPE;
clp[1]=Integer.TYPE;
Method met=cla.getMethod(“suma”,clp);
Integer salida=(Integer) met.invoke(new Demo(),entrada);
System.out.println(salida.intValue());
} catch (Exception e) {
e.printStackTrace();
}
}
}