2012-12-22 16 views
7

Eventuali duplicati:
How do I invoke a java method when given the method name as a string?
How do I programmatically compile and instantiate a Java class?Converti stringa di codice in Java

Ho una funzione:

fun1() { 
    System.out.print("hello"); 
} 

voglio leggere una stringa da entrambi l'utente o un file e se la stringa "fun1()" appare, chiamerei fun1.

Non voglio farlo con un'istruzione switch, perché ho un sacco di funzioni.

C'è un modo per chiamare una funzione usando le stringhe?

+5

In genere, questa è una cattiva idea. Cosa stai cercando di ottenere con questo? – Makoto

+1

Penso che sarebbe lo stesso approccio di questo; http://stackoverflow.com/questions/160970/how-do-i-invoke-a-java-method-when-given-the-method-name-as-a-string – Steve101

risposta

5

È potrebbe uso riflessione qui:

Method method = MyClass.class.getDeclaredMethod("fun1", new Class[] {}); 
method.invoke(this, null); 

esaminare in primo luogo, tuttavia, se si può evitare l'uso di riflessione poi fare. La riflessione porta con sé una serie di svantaggi, come la difficoltà di eseguire il debug e il rendering di strumenti di refactoring automatici come quelli in Eclipse effettivamente inutili.

Ripensare il tuo design; puoi probabilmente risolvere il problema meglio con una decomposizione più pulita delle classi, un migliore polimorfismo, ecc.

+0

grazie mille. .. –