Boa tarde pessoal.
Suponhamos que eu tenha uma String assim:
String metodo = "contarAteDez(10)"
Tem como eu chamar o metodo contarAteDez(10) atraves desta String?
Desde já agradeço.
Boa tarde pessoal.
Suponhamos que eu tenha uma String assim:
String metodo = "contarAteDez(10)"
Tem como eu chamar o metodo contarAteDez(10) atraves desta String?
Desde já agradeço.
oO… pra que voce vai usar isso ???
usa Reflection
EDIT:
[code]
public class Teste {
public Teste() {
try {
Class classe = Class.forName("Teste");
java.lang.reflect.Method met = classe.getMethod("metodo");
met.invoke(this);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (java.lang.reflect.InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void metodo() {
// ......
}
}[/code]
como a elisangela falou, use reflection.
Porém a outros problemas em utilizar dessa forma, olhe o exemplo:
String methodInput = "println(23)";
String methodName = methodInput.replaceFirst("\\(.*$", "");
String methodArgs = methodInput.replaceFirst("^[^(]+\\((.*)\\)", "$1");
Class[] classArgs = getClasses(methodArgs.split(", *"));
Method method = System.out.getClass().getMethod(methodName, classArgs);
method.invoke(this,methodArgs.split(", *"));
Aqui, eu quero chamar System.out.println(23);.
Para isso, separo o nome do método dos argumentos.
Depois pego os argumentos e faço split (caso haja mais de 1)
Agora vem a parte ruim: preciso obter a classe de cada argumento passado para q o java possa identificar a assinatura correta método. Isso se vc quiser algo q funcione de forma genérica e deduza sobrecargas. Se vc se comprometer a não utilizar sobrecargas, a coisa fica bem mais fácil, pois vc pode obter o método através de System.out.getClass().getMethods().