Methoden Benutzerdefinierter Methodenaufruf

Allegor

Mitglied
Hallo,

ich möchte, dass eine Methode abhängig von der Eingabe des Users aufgerufen wird. Bisher habe ich:

Java:
import java.util.Scanner;

class Beispiel {
	
	public static void main(String[] args) {
		System.out.println("Welche Methode soll ausgeführt werden?");
		Scanner scan = new Scanner (System.in);
		String eingabe = scan.nextLine();
        // where the magic happens
	}
	
	public static void ersteMethode() {
            ...
	}
	public static void zweiteMethode() {
            ...
	}
    ...
}

Nun soll, wenn als Eingabe "ersteMethode" kommt, eben diese aufgerufen werden. Analog für "zweiteMethode", ... Gut wäre es hierbei natürlich auch, der Methode Argumente übergeben zu können. Leider habe ich keine Ahnung, ob und wie man das veranstaltet.
 
Zuletzt bearbeitet:

Zettelkasten

Aktives Mitglied
Wenn die Methoden-Namen wirklich 1 zu 1 gleich der Eingabe sein sollen, kannst du folgendes verwenden:
Java:
Class<?> clazz = this.getClass(); // gibt dir deine aktuelle Klasse als Objekt
Method[] methods = clazz.getDeclaredMethods(); // gibt dir einen Array mit allen Methoden in der Klasse zurück
method.invoke(...); // Ruft diese Methode auf
Mit einer einfachen for-Schleife kannst du herausfinden, welche Methode du aufrufen musst, damit das mit dem Namen stimmt. Die Parameter von
Code:
invoke()
hab ich grad nicht im Kopf, schau am besten in der API nach.
Sei aber vorsichtig, dass der Benutzer nicht durch Aufrufen spezieller anderer Methoden etwas machen könnte, was du nicht willst. Ggf. musst du bestimmte Methoden z.B. blocken.

Und was die Argumente angeht:
Nachdem du die Methode als Objekt herausgefunden hast, kannst du herausfinden, wie viel Argumente diese hat (
Code:
.getParameterTypes()
gibt dir eine Liste mit den Typen zurück, sodass du dann auch testen kannst, dass der Typ der Eingabe richtig ist bzw. du den Eingabe-String z.B. in einen Integer castest). Dann kannst du je nach dem weitere Abfragen an dem Benutzer stellen und so jedes Argument herausfinden.
 
Zuletzt bearbeitet:

njans

Top Contributor
oder man macht das ganze ohne Reflection (welche nebenbei eine unschöne Lösung ist)
und verwendet einfach einen switch:

Java:
switch (eingabe)
{
  case "ersteMethode":   ersteMethode(); break;
  case "zweiteMethode": zweiteMethode(); break;
}
 
T

tummo

Gast
Ich halte Zettelkastens Antwort auch für eine unschöne und unpassende Herangehensweise, besonders wenn man bedenkt dass der TE noch blutiger Anfänger ist, und das geforderte Vorgehen eher kritisch hinterfragt werden sollte, anstatt ihm nur den typischen "Codehelden"-Code, also zwar für das eigene Ego cool aussehenden aber unterm Strich nur schlecht lesbaren und ziemlich am Nutzer vorbeigehenden Code, über den Zaun zu werfen. Die Zeit wäre für ein Überdenken dieses Entwurfs und eine saubere Lösung weit besser aufgehoben.

Allegor, überlege dir erst mal warum du sowas willst, und ob es wirklich sinnvoll ist, den Nutzer direkt irgendwelche Java-Methoden aufrufen zu lassen. Das ist ein ziemlicher Bruch in den Abstraktionsebenen. Methoden lassen sich auch wunderbar in Objekte auslagern und mit IDs versehen.
 
Zuletzt bearbeitet von einem Moderator:

Allegor

Mitglied
Vielen Dank für eure Hilfe. Mit dem switch klappt es wunderbar, da hätte ich natürlich auch selbst drauf kommen können... Ich sehe aber ein, dass diese Variante nicht so schön ist. Ich werde einmal sehen, ob ich das auch eleganter machen kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
V Benutzerdefinierter Zahlenbereich berechnen Java Basics - Anfänger-Themen 5
C Methodenaufruf mit geänderten Argumenten Java Basics - Anfänger-Themen 10
S Methoden Methodenaufruf rekursiv zählen Java Basics - Anfänger-Themen 4
N methodenaufruf for each geht nicht Java Basics - Anfänger-Themen 2
K Methodenaufruf /-ausgabe Java Basics - Anfänger-Themen 5
O Methodenaufruf Java Basics - Anfänger-Themen 5
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
Queiser Methodenaufruf Java Basics - Anfänger-Themen 2
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
I Java Methodenaufruf Java Basics - Anfänger-Themen 9
A OOP Methodenaufruf in einer anderen Klasse Java Basics - Anfänger-Themen 2
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
M Methodenaufruf über SQL UPDATE Java Basics - Anfänger-Themen 8
M Methodenaufruf in der Main Datei funzt nicht Java Basics - Anfänger-Themen 13
BadBat Klassen instanz als variable + methodenaufruf Java Basics - Anfänger-Themen 4
M Methodenaufruf in Methode Java Basics - Anfänger-Themen 6
M Objekt Name für MethodenAufruf nachträglich zuweisen? Java Basics - Anfänger-Themen 2
J if() mit Methodenaufruf kombiniert (Pixelerkennung) Java Basics - Anfänger-Themen 3
A Probleme beim Methodenaufruf von Object[] ! Java Basics - Anfänger-Themen 12
A Probleme beim Methodenaufruf von char[] ! Java Basics - Anfänger-Themen 10
T Rekursiver Methodenaufruf funktioniert nicht Java Basics - Anfänger-Themen 7
D Methoden g.setColor funktioniert nicht bei Methodenaufruf in anderer Klasse Java Basics - Anfänger-Themen 1
M Methoden Methodenaufruf allgemein Java Basics - Anfänger-Themen 3
H Ist Math.Random() eine Methode oder ein Methodenaufruf (Klausurfrage) Java Basics - Anfänger-Themen 4
O Methodenaufruf Java Basics - Anfänger-Themen 6
F Methodenaufruf Java Basics - Anfänger-Themen 1
F Erste Schritte Label Text vor Methodenaufruf setzen Java Basics - Anfänger-Themen 17
J Array mit Methodenaufruf Java Basics - Anfänger-Themen 2
S Problem bei Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 3
OnDemand Methodenaufruf Java Basics - Anfänger-Themen 3
O Methodenaufruf - Inhaltsveränderung Java Basics - Anfänger-Themen 23
G Methodenaufruf anderer Klasse Java Basics - Anfänger-Themen 18
L Einfacher Methodenaufruf vs. Objekt Java Basics - Anfänger-Themen 4
O Methodenaufruf im Konstruktor Java Basics - Anfänger-Themen 6
G was ist ein Methodenaufruf mit (){}? Java Basics - Anfänger-Themen 6
S Methoden Klassen Definition - Methodenaufruf Java Basics - Anfänger-Themen 7
K Methoden Methodenaufruf für BufferedWriter .. Java Basics - Anfänger-Themen 5
feardorcha Methodenaufruf Übergabe- und Rückgabewert Java Basics - Anfänger-Themen 5
W Methodenaufruf innerhalb einer Klasse - static vs. this Java Basics - Anfänger-Themen 3
A Problem bei Methodenaufruf Java Basics - Anfänger-Themen 6
B Parameterausführung bei Methodenaufruf Java Basics - Anfänger-Themen 8
A Methodenaufruf Java Basics - Anfänger-Themen 4
P Vererbung Methodenaufruf funktioniert aber Wertzuweisung von Variablen nicht Java Basics - Anfänger-Themen 9
S methodenaufruf Java Basics - Anfänger-Themen 8
G Erste Schritte Methodenaufruf, Variablen-Deklaration Java Basics - Anfänger-Themen 6
L Methodenaufruf in main() Java Basics - Anfänger-Themen 3
M Methodenaufruf in for-Schleife - nur 1 mal ausgegeben Java Basics - Anfänger-Themen 3
I Externer Methodenaufruf, Punkt-Notation Java Basics - Anfänger-Themen 11
I Methoden Rückverfolgung Methodenaufruf Java Basics - Anfänger-Themen 15
E Methoden Wie kann ich eine Methode so schreiben, dass Methodenaufruf polymorph erfolgen kann? Java Basics - Anfänger-Themen 8
M Methoden Methodenaufruf mit .class. Java Basics - Anfänger-Themen 2
J rekursiver Methodenaufruf Java Basics - Anfänger-Themen 12
K Klassen this-Referenz und Klassen/Methodenaufruf Syntax Java Basics - Anfänger-Themen 3
T Java mehrfacher Methodenaufruf Java Basics - Anfänger-Themen 15
L Methodenaufruf aus anderer Klasse Java Basics - Anfänger-Themen 5
B Quicksort --> Methodenaufruf Java Basics - Anfänger-Themen 10
O Methodenaufruf Java Basics - Anfänger-Themen 4
A nullPointerException bei Methodenaufruf Java Basics - Anfänger-Themen 16
J Vererbung, Methodenaufruf Java Basics - Anfänger-Themen 4
M Problem bei Methodenaufruf aus ActionListener Java Basics - Anfänger-Themen 5
G Methodenaufruf aus der Kommandozeile Java Basics - Anfänger-Themen 28
N Methodenaufruf funtioniert nicht Java Basics - Anfänger-Themen 3
C Methodenaufruf mit Variablen die gesetzt werden Java Basics - Anfänger-Themen 10
Antoras mit ActionListener/Methodenaufruf Textfelder zeichnen Java Basics - Anfänger-Themen 4
G Dynamischer Methodenaufruf Java Basics - Anfänger-Themen 3
G Methodenaufruf über ein Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
H ungültige methodenaufruf Java Basics - Anfänger-Themen 16
G Methodenaufruf Java Basics - Anfänger-Themen 3
G Frage zu Oberklasse bei Methodenaufruf Java Basics - Anfänger-Themen 2
V Dynamischer Klassen bzw. Methodenaufruf Java Basics - Anfänger-Themen 6
V Wie und wieso geht dieser Methodenaufruf? Java Basics - Anfänger-Themen 2
S Methodenaufruf Java Basics - Anfänger-Themen 6
G Methodenaufruf in der for-Schleife mit Array Java Basics - Anfänger-Themen 7
L hsqldb Methodenaufruf Java Basics - Anfänger-Themen 10
K synchron und asynchroner Methodenaufruf Java Basics - Anfänger-Themen 17
R Fehler bei Methodenaufruf Java Basics - Anfänger-Themen 2
G Methodenaufruf Java Basics - Anfänger-Themen 3
T NullPointerException bei Methodenaufruf Java Basics - Anfänger-Themen 2
G Methodenaufruf Java Basics - Anfänger-Themen 10
K Klassenübergriefendes Methodenaufruf Problem Java Basics - Anfänger-Themen 6
S methodenaufruf. Java Basics - Anfänger-Themen 16
G methodenaufruf Java Basics - Anfänger-Themen 4
E Methodenaufruf mittels variable? kA Java Basics - Anfänger-Themen 5
G methodenaufruf Java Basics - Anfänger-Themen 3
G methodenaufruf Java Basics - Anfänger-Themen 5
W Überschreiben und Methodenaufruf Java Basics - Anfänger-Themen 3
L Methodenaufruf zwischen Klassen Java Basics - Anfänger-Themen 3
C Methodenaufruf mit throws IOException Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben