Methode über String Wert aufrufen

Hag2bard

Bekanntes Mitglied
Hallo,

Ich bin noch blutiger Anfänger was Java angeht und probiere deshalb gerne herum.
Ob mein Vorhaben in der Praxis jemals Anwendung findet, weiß ich nicht und wahrscheinlich gibt es geschicktere Lösungen. Aber ich fände es wichtig durch Rumprobieren, Probleme irgendwann mit mehreren Ansätzen lösen zu können.

Ich weiß wie man eine Methode aufrufen kann.


Methoden r1 = new Methoden();
String methode ("primzahl");

r1.methode();

Aufgerufen werden soll die Methode primzahl.
Aber ich möchte einem String einen Wert übergeben. In dem Fall soll der String methode den Wert primzahl bekommen.
So dass letztendlich die Methode primzahl aufgerufen wird.

Wie kann ich das realisieren?
 

LimDul

Top Contributor
Gehen tut das über Reflection. Man kann sich aus einem Class-Objekt die Methoden holen und die aufrufen:
Code:
Mathods methodArray[] =  r1.getClass().getMethods();
Dann da die mit dem passenden Namen raussuchen und über invoke() aufrufen.

ABER

Es gibt extrem wenige Fälle wo das sinnvoll ist - eigentlich wirklich nur wenn man technische Frameworks schreibt. Ansonsten gibt es normalerweise keinen Grund so etwas zu tun, aber viele Gründe es nicht zu tun:

* Der Code wird schwer verständlich
* Zur Compile Zeit kann nicht geprüft werden, ob dieser Aufruf überhaupt funktionieren kann (Gibt es die Methode, kann man drauf zugreifen, werden die korrekten Parameter übergeben) - das wird alles erst zur Laufzeit überprüft
* Man kann darüber viel Unfug treiben
* Es ist oft ein Zeichen von schlechtem Stil bis beschissenem Softwaredesign, wenn man auf sowas zurückgreift bzw. zurückgreifen muss
 

Hag2bard

Bekanntes Mitglied
Vielen Dank für die vernünftige Antwort. Diverse Foren haben sich eigentlich eher dazu entwickelt, dass man für solche Fragen zusammen gefalten wird.

Wie wäre es denn besser zu realisieren Methoden nach Bedarf auf zu rufen?

Mit einer switch Methode?

Mit freundlichen Grüßen Chris
 
K

kneitzel

Gast
Vielen Dank für die vernünftige Antwort. Diverse Foren haben sich eigentlich eher dazu entwickelt, dass man für solche Fragen zusammen gefalten wird.

Wie wäre es denn besser zu realisieren Methoden nach Bedarf auf zu rufen?

Mit einer switch Methode?

Mit freundlichen Grüßen Chris
Switch ist eine Möglichkeit, die am Anfang die verständlichste sein dürfte.

Aber das hat gewisse Nachteile, daher wird das oft über andere Wege gelöst. Durch die funktionalen Erweiterungen kann man sehr schön auch Aufrufe speichern - so die Methoden alle die gleichen Parameter haben. Da wäre dann die map eine Möglichkeit.

Generell ist die Frage aber auch immer: Was willst Du erreichen? Es gibt teilweise auch Pattern, die manche Dinge schön abbilden können. Strategy Pattern fällt mir da z.B. ein, bei dem eine Funktionalität / ein Verhalten in eine eigene Klassenhierarchie gesteckt werden.
 

Hag2bard

Bekanntes Mitglied
Hallo nochmal und guten Abend,

Nochmals danke für die rege Beteiligung eurerseits.
Ich habe im Grundprinzip eigentlich garnichts vor.
Ich bin wie gesagt blutiger Anfänger und bin nun eine ganze Weile an den Tutorials gescheitert, wenn es um Methodenaufrufe ging. Nun bin ich halt eben am Probieren und am Üben um Routine und ein Verständnis zu bekommen für was man das gebrauchen kann. Auch was Rückgabewerte sind, was das mit dem public und dem Zeug soll und nun versuche ich mich durch praktische Beispiele da rein zu arbeiten.
Ich habe nun Methoden erstellt um Primzahl zu berechnen, eine Methode die Schaltjahre berechnet und ich denke, zumindest habe ich das so aufgefasst ist eine Klasse dann eine Sammlung von Methoden, denen man nach Bedarf auch Werte übergeben kann. Und die main klasse ist dann sozusagen das Inhaltsverzeichnis. Ich hätte gerne ein Programm so gestaltet, dass man frei eingeben kann (kein Multiple Choice) welche Methode aufgerufen werden soll.
Also eine einfache scanner Funktion die eine Benutzereingabe erfordert und dann die Eingabe als string gespeichert dem Methodenaufruf übergibt.

Ich versuche immer wieder alle Tutorials durch zu gehen und nach und nach zu verstehen wie man das mit den Methoden macht.
Auch warum man nicht einfach einen int oder ein String deklariert ohne vorher public oder ähnliches davor zu schreiben.


Liebe Grüße
 
K

kneitzel

Gast
Also sowas ist unüblich. Und die main ist nicht ein "Inhaltsverzeichnis" oder so ... das ist einfach nur der Einstiegspunkt.

Generell ist es ja so, dass Du Aktionen, die der Anwender machen kann, implementieren musst. Das sind aber keine Methoden. Das ist also ein Gedankengang, von dem Du Dich trennen musst! Der Anwender hat sich auch nicht für die Klassen und Methoden zu interessieren! Das sind zwei paar Schuhe! Da mag es zwar Abhängigkeiten geben, denn die Implementierung richtet sich immer nach den Vorgaben, aber die Vorgaben bestimmen keine feste Implementierung!

Also versuche es, Objektorientiert zu verstehen!

Dann hast Du tatsächlich einen Katalog von Aktionen.
Du hat konkrete Aktionen. Diese wurden in dem Katalog der Aktionen eingetragen.

So in der Art baust du das dann objektorientiert auf. Also immer etwas überlegen: Was hast Du für Objekte? Welche Eigenschaften haben diese? Was sollen diese tun können?
 

temi

Top Contributor
ist eine Klasse dann eine Sammlung von Methoden
Eine Klasse hat eine Aufgabe, die sie erfüllen soll und i. d. R. benötigt sie dazu Instanzvariablen (die den Zustand der Klasse speichern) und Methoden (die u. U. den Zustand der Klasse verändern). Ein Beispiel wäre eine Klasse für einen Bruch. Der Zustand ist der Wert von Zähler und Nenner. Methoden sind add(), sub(), div() und mul(). Eine Klasse sollte auch nur eine Aufgabe haben, also sollte Bruch keine Primzahlen berechnen können.

Wie diese Klasse dann verwendet wird ist eine andere Sache. Im einfachsten Fall hast du vielleicht Eingabefelder für die Werte und Buttons für Aktionen wie addieren, subtrahieren, usw. Über diese Buttons werden dann die entsprechenden Methoden aufgerufen und die Werte aus den Eingabefeldern übergeben.

Du könntest aber auch nur ein Eingabefeld haben in welches zu z. B. "1/2 + 3/4" schreiben möchtest. Um diesen Ausdruck auszuwerten wirst du vermutlich eine oder mehrere weitere Klassen benötigen, deren Aufgabe genau das ist: einen mathematischen Ausdruck auswerten (parsen) und die entsprechenden Methoden von "Bruch" aufzurufen. Um es gleich vorweg zu sagen, das ist nicht ganz trivial und auch nicht das, was ein Anfänger gleich zu Beginn versuchen sollte.
 

temi

Top Contributor
Ich hätte gerne ein Programm so gestaltet, dass man frei eingeben kann (kein Multiple Choice) welche Methode aufgerufen werden soll.
Letztendlich läuft es bei deinem Wunsch allerdings auf Multiple Choice hinaus, denn: Du hast zwei Methoden prim() und leapYear(), was soll also aufgerufen werden, wenn der Benutzer "euler" eingibt? Es gibt ja nur die Wahl zwischen zwei Methoden.

Dennoch kannst du natürlich über entsprechende Abfrage auch auf mehrere Worte wie "prim", "primzahl" usw. reagieren und die Methode aufrufen. In deinem Fall mach das erst mal einfach mit if-Abfragen oder switch. Später (wenn du die Grundlagen gut drauf hast!) solltest du dich dann mit Entwurfsmustern beschäftigen und dann eröffnen sich noch viele weitere (und bessere) Möglichkeiten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Aufruf einer Methode über einen String Java Basics - Anfänger-Themen 11
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
J Wert zurückgeben über get Methode Java Basics - Anfänger-Themen 8
O Methode über Leerzeichen Java Basics - Anfänger-Themen 13
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
J Methode über Scanner aufrufen Java Basics - Anfänger-Themen 15
MiMa Datentyp Short Wert zuweisen über Methode Java Basics - Anfänger-Themen 2
D Werte von Variablen über Methode ändern Java Basics - Anfänger-Themen 10
F Problem bei eshop -> Ausführen einer Methode über eine Shopverwaltung Java Basics - Anfänger-Themen 6
M Wert von globalen Variablen über eine Methode ändern Java Basics - Anfänger-Themen 8
B Methoden Methode Direkt starten (über Kommandokonsole) Java Basics - Anfänger-Themen 5
R Fragen über Fragen, main-Methode und Co. Java Basics - Anfänger-Themen 32
D Methoden Methode über andere Klasse aufrufen Java Basics - Anfänger-Themen 7
I Nur main-Methode über Konsole aufrufbar? Java Basics - Anfänger-Themen 3
C Objekt X über Methode aus anderer Klasse verändert Java Basics - Anfänger-Themen 3
G Klasse überschreiben wenn Rückgabe über Methode Java Basics - Anfänger-Themen 6
U Frage über return Methode Java Basics - Anfänger-Themen 4
L Methode über for-schleife aufrufen und verändern Java Basics - Anfänger-Themen 7
L Methode über for-schleife aufrufen und verändern Java Basics - Anfänger-Themen 5
L ArrayList über Methode in Datei schreiben Java Basics - Anfänger-Themen 13
I Strukturfrage: Button über Methode erzeugen Java Basics - Anfänger-Themen 13
F Array deklarieren und über Methode aufrufen Java Basics - Anfänger-Themen 13
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
M Anzahl Kommandozeilenparamter mittels Methode Java Basics - Anfänger-Themen 11
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
D Methode aus dem Aufrufer aufrufen Java Basics - Anfänger-Themen 1
T IOStreams read(byte[]b) methode Java Basics - Anfänger-Themen 2
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
M generate Methode für Streams Java Basics - Anfänger-Themen 6
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
T Linked List set-Methode Java Basics - Anfänger-Themen 2
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
W Equals-Methode überschreiben bei composition Java Basics - Anfänger-Themen 20
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
V Methoden printChar Methode mit Rückgabetyp void Java Basics - Anfänger-Themen 26
F Graph Tiefensuche Methode Java Basics - Anfänger-Themen 7
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
M Warum return die Methode den Wert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
S Methode Java Basics - Anfänger-Themen 4
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
F nach Methode Programm nicht beenden Java Basics - Anfänger-Themen 9
Liroyd Methode mit Objektvariabel rechnen? Java Basics - Anfänger-Themen 6
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
D Methode um mögliche Rezepte auszugeben Java Basics - Anfänger-Themen 12
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
J Hallo zusammen , was macht diese Methode hier genau? Java Basics - Anfänger-Themen 3
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben