Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Welche Möglichkeiten hat man in Java, um eine Methode aufzurufen, deren Name in einem String steht?
Java:
public void runMethod(String name) {
[...]
}
Was müsste anstatt von [...] stehen?
Gibt es dafür andere Wege, als Reflections oder eine If-Abfrage? Ersteres ist erstens nicht gerade schnell und zweitens liegt die Methode ja in der selben Klasse.
Über Vorschläge und Denkanstößte würde ich mich freuen,
Ich denke du hast schon alle Möglichkeiten aufgezählt... Schreibst du denn an einem Echtzeittool für Überwachung von riesigen Maschinen, dass es auf jeden CPU-Takt ankommt?
Es könnte auch sein, dass du es generell vermeiden kannst, sowas machen zu müssen. Aber dazu braucht man ja mehr Infos was du überhaupt willst.
In letzter Zeit versuche ich meine Programme ein wenig modularer zu schreiben.
So versuche ich beispielsweiße die GUI ohne großartige Änderungen an anderen Klassen auszutauschen.
Dafür implementiert die GUI-Klasse ein Interface, in dem Methoden wie
Java:
public void makeMainFrame(String title);
public void setLayoutManager();
(nur als Beispiel - dem ganzen fehlt noch ein wenig die Objektorientierung, aber das soll jetzt nicht das Thema dieses Threads sein)
Eine Klasse implementiert dann dieses Interface entsprechend für eine bestimmte GUI (zB Swing)
Dies hat den Vorteil, dass sich in dieser Klasse wirklich nur auf das Zeichnen der GUI konzentiert wird; Berechnungen, usw. finden in einer anderen -nicht auswechselbaren- Klasse statt.
Kleines Beispiel:
Java:
interface UserInterfaceMethods{
public void makeMainFrame(String title);
}
class UserInterface_Swing extends JFrame implements UserInterfaceMethods{
[...]
public void makeMainFrame(String title){
JFrame j = new JFrame(title);
j.setVisible(true);
}
[...]
}
class UserInterface {
...
UserInterfaceMethods methods = new UserInterface_Swing();
methods.makeMainFrame("Titel");
...
}
Auch das ist noch nicht wirklich ausgereift... Vielmehr das Grundprinzip
Nun stellt sich mir aber die frage, was ich mit nicht statischen Sachen, wie zB einem Listener mache.
Und da dachte ich eben, dass man einer entsprechenden Methode (
Code:
addActionListener()
oder so) einen String übergeben kann, der der Name einer Methode ist, die in userInterface steht.
Notwendig ist das ganze natürlich nicht, aber man will sich ja auch irgendwo weiterentwickeln.
PS: Bitte keine Verbesserungen oder Fragen (Was machst du denn, wenn...?) zum Konzept an sich, es exestiert gerade mal 1 Stunde (höchstens) in meinem Kopf, es sei denn sie wären grundlegend.