2016-08-04 26 views
-2

Say ich eine Liste von Methoden mit dem Namen fooUp haben, fooDown, fooLeft, fooRightCall-Methode angegebene Zeichenfolge für sie

Gibt es eine Möglichkeit, ich irgendeine Art von Code in Java machen, die ein Verfahren zur Herstellung einer Reihe von gegebenen anrufen der Methodenname?

Beispiel:

move(String str) 
{ 
    call("foo" + str) 
} 

fooUp() 
{ 
} 

fooDown() 
{ 
} 

fooLeft() 
{ 
} 

fooRight() 
{ 
} 
mainFunction() 
{ 
    move("Left") 
} 

Dies ist nur Beispielcode, aber ich dachte, so etwas wie dies zu tun, einen Methodenaufruf zu machen, anstatt der Code innerhalb des Verfahrens wiederholt werden. Grundsätzlich weniger Zeilen von/cleaner code.

+1

"Java Reflections" ist, was Sie suchen. –

+1

Sie können stattdessen eine switch-Anweisung verwenden und für jeden Fall eine andere Methode aufrufen. – simonv

+1

Ihre Frage hört sich an, als könnte es tatsächlich ein [XY Problem] (http://mywiki.wooled.org/XyProblem) sein, in dem Sie fragen "Wie repariere ich diesen Code?", Wenn die wirkliche Lösung darin besteht, einen völlig anderen Ansatz zu verwenden . Ja, Sie könnten dies mit Nachdenken tun, und nein, dies ist nicht der beste Weg, um diese Art von Problemen zu lösen. Wahrscheinlich ist eine bessere Lösung um die Ecke, indem Sie Ihr Programm neu faktorisieren. –

Antwort

1

Ja, aber Sie müssen Reflexion verwenden. Ich werde es Ihnen überlassen, in Reflexion zu sehen und wie es zu benutzen, aber Ihr Code wie folgt aussehen:

YourClass.class.getMethod(yourObject, yourMethodString, yourArgumentTypes).execute(yourArguments); 

Es ist nicht für ziemlich Code machen und die meiste Zeit, ist es am besten vermeide es so gut wie möglich. Eine bessere Lösung für das bereitgestellte Beispiel könnte darin bestehen, die Zeichenfolge in einer switch-Anweisung zu verwenden, um zu bestimmen, welche Methode aufgerufen werden soll.