Methode über String Wert aufrufen

H

Hag2bard

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?
 
L

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
 
H

Hag2bard

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
 
MoxxiManagarm

MoxxiManagarm

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

Mit einer switch Methode?

Kommt darauf an, haben die Methoden alle die gleiche Signatur, also Parameter und Rückgabewerte? Falls ja, dann kannst du das leichter über eine Map machen. Falls nein ist vermutlich switch besser, ja.
 
kneitzel

kneitzel

Top Contributor
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.
 
H

Hag2bard

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
 
kneitzel

kneitzel

Top Contributor
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

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

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
O Methode über Leerzeichen Java Basics - Anfänger-Themen 13
UnknownInnocent Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
J Methode über Scanner aufrufen Java Basics - Anfänger-Themen 15
M 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
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 2
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 3
L Methode für Zweidimensionale Arrays Java Basics - Anfänger-Themen 4
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
KogoroMori21 Methode in der main ausgeben Java Basics - Anfänger-Themen 2
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
L Methode zum invertieren eines Arrays Java Basics - Anfänger-Themen 7
s_1895 zu viele Zeilen in der Main Methode Java Basics - Anfänger-Themen 4
M Rekursive Java-Methode Java Basics - Anfänger-Themen 13
B Methoden warum macht die Methode nicht das was ich erwarte? Java Basics - Anfänger-Themen 2
L Attribute aus Klasse in berechnungs Methode übergeben Java Basics - Anfänger-Themen 1
Y Aufruf von Methode nicht möglich. Java Basics - Anfänger-Themen 2
O Instanzattribut per Getter Methode zuweisbar, warum? Java Basics - Anfänger-Themen 3
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
G Methoden Methode die aus einem Array ein Index ausgibt? Java Basics - Anfänger-Themen 2
R Boolean Methode Rückgabewert if() Java Basics - Anfänger-Themen 1
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
G Rekursive Methode liefert augenscheinlich keinen boolean-Wert zurück. Java Basics - Anfänger-Themen 4
kazzam94 Methode soll Array von Boolean zurückgeben Java Basics - Anfänger-Themen 5
M negate Methode Java Basics - Anfänger-Themen 13
JavaClara Fehlermeldung bei split-Methode Java Basics - Anfänger-Themen 12
A Methode in einer anderen Klasse verwenden Java Basics - Anfänger-Themen 1
Eule25 Methode mit Array Java Basics - Anfänger-Themen 4
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
S HashMap contains() Methode Java Basics - Anfänger-Themen 1
F Methoden Methode richtig aufrufen Java Basics - Anfänger-Themen 3
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
T Methode implementieren Java Basics - Anfänger-Themen 21
JD_1998 Vorgegebene Methode erweitern um Hex -> Dezimal umzuwandeln Java Basics - Anfänger-Themen 1
A While Schleife - buubelsort methode Java Basics - Anfänger-Themen 2
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
X compareTo Methode wird ignoriert Java Basics - Anfänger-Themen 7
macle Rekursive String Methode, Gerade Zahlen rausfiltern Java Basics - Anfänger-Themen 10
B Wie kann ich etwas vor der Main-Methode ausführen? Java Basics - Anfänger-Themen 21
J Methode als Class anlegen Java Basics - Anfänger-Themen 7
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
M this.object in einer parameterlosen Methode verwenden Java Basics - Anfänger-Themen 3
P Methode trim() ohne StringBuilder Java Basics - Anfänger-Themen 1
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
B Methode für jede beliebe Entity erstellen Java Basics - Anfänger-Themen 7
O BiPredicate in einer forEach Methode Java Basics - Anfänger-Themen 10
B Klassen Abstrake Klasse und Template Methode Java Basics - Anfänger-Themen 4
parrot Array: Methode fügeHinzu Java Basics - Anfänger-Themen 13
B Eine Methode erstellen Java Basics - Anfänger-Themen 3
G Java charAt Methode Java Basics - Anfänger-Themen 10
B main Methode Java Basics - Anfänger-Themen 5
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
G Java LinkedList remove Methode Java Basics - Anfänger-Themen 5
L Wie greife ich in der Subklasse auf die Parameter einer Methode der Superklasse zu ? Java Basics - Anfänger-Themen 15
Bluedaishi Hilfe beim erklären dieser Methode Java Basics - Anfänger-Themen 5
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
1 main-Methode erweitern, Nachfrage nach wiedeholung Java Basics - Anfänger-Themen 2
Y Methode + Parameters + Ein und Ausgabe Java Basics - Anfänger-Themen 1
L Variable von einer Methode zu einer anderen Methode inkl. einer "Zwischenmethode" Java Basics - Anfänger-Themen 1
G Java equals() Methode Java Basics - Anfänger-Themen 9
I Greedy Methode Methoden nutzen Java Basics - Anfänger-Themen 3
B Hilfe bei einer rekursiven Methode Java Basics - Anfänger-Themen 3
V Collections Methode in der Methode aufrufen Java Basics - Anfänger-Themen 2
A Implementierung von String toString methode() Java Basics - Anfänger-Themen 4
S Auf Methode einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 3
Z Methode zum Heraufinden von Anagrammen ohne Java API, Ausnahme String Java Basics - Anfänger-Themen 14
B Get / Set - Methode für verschiedene Entities? (generisch) Java Basics - Anfänger-Themen 21
J main methode Java Basics - Anfänger-Themen 1
C Methode Seiten tauschen eines erstellten Rechtecks mit Seite A und B Java Basics - Anfänger-Themen 9
R Methode zwei Sortierkriterien der Klasse Comparator übergeben Java Basics - Anfänger-Themen 4
J Methoden set Methode array Java Basics - Anfänger-Themen 2
V Switch Methode macht Code kaputt Java Basics - Anfänger-Themen 18
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
J Apache Poi - createCell() Methode akzeptiert keinen Index aus for-schleife als Parameter Java Basics - Anfänger-Themen 4
S Wann Methode abstract? Java Basics - Anfänger-Themen 10
L Objekt an Methode übergeben Java Basics - Anfänger-Themen 4
H Rekursiv Methode ausführen bei Kindern Java Basics - Anfänger-Themen 12
R Methode Rückgabe Java Basics - Anfänger-Themen 10
M Implementierung einer getNextId Methode Java Basics - Anfänger-Themen 5
bensdt Klasse erweitern um eine Methode "void decrement()" Java Basics - Anfänger-Themen 5
N Mit Objekt der Superklasse auf Methode der Subklasse zugreifen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Anzeige

Neue Themen


Oben