Methode mit, vom aufrufenden Objekt abhängigen, Rückgabewert

Status
Nicht offen für weitere Antworten.

siwica

Mitglied
Hallo,

ich habe folgende Frage/Problem:

Ich habe ein Objekt x mit einer Methode getLala(). Nun wird diese Methode von verschiedenen anderen Objekten a, b, c,.. aufgerufen. Der Methodenaufruf x.getLala() soll nun in Abhängigkeit des Namen des aufrufenden Objektes (bzw. des Namens der dazugehörigen Klasse) veschiedene Werte zurückgeben.

z.B:
innerhalb der Klasse a soll für den Methodenaufruf gelten: x.getLaLa() == 1
innerhalb der Klasse b soll für den Methodenaufruf gelten: x.getLaLa() == 2
...

Eine Idee ist, dies über die Hashcodes zu realisieren, also beim Erzeugen der jeweiligen Objekte deren HashCodes zu speichern und dann die Methode zu x.getLala(long Hashcode) umzuändern, so dass jedes Objekt a, b, c... seinen eigenen Hashcode abfragt und diesen als Parameter (und quasi als Schlüssel) für die Methode getLala nutzt.

Da ich die Methode getLala() jedoch gerne Parameterfrei hätte, suche ich nun eine andere Möglichkeit das zu realisieren. Evtl. gibt es ja eine Möglichkeit den Hashcode oder den Namen des aufrufenden Objekten innerhalb von x zu ermitteln, ohne das diese als Parameter übergeben werden muss?!

Vielen Dank für eure Hilfe!

Grüße,
Simon
 
S

SlaterB

Gast
ohne Parameter kannst du das genaue aufrufende Objekt nicht bestimmen,
sondern nur die Klasse und Methode und Zeilennummer so wie bei einem StackTrace einer Exception,

mit Thread.getStackTrace() bekommst du ein Objekt, welches du untersuchen kannst,

aber mit Objektorientierung hat das nix zu tun, das sollte man höchstens für ganz allgemeine Dinge wie Exceptionhandling oder Logging verwenden
 

siwica

Mitglied
Mir würde es auch genügen, wenn ich nur den Klassennamen des aufrufenden Objekts ermitteln könnte... Wäre das möglich?

Grüße,
Simon
 
S

SlaterB

Gast
hab ich das nicht eben beantwortet?
es ist wohl
Thread.getCurrentThread().getStackTrace()
statt
Thread.getStackTrace()
 

siwica

Mitglied
Ok, danke! Ja so würde es sicher gehen, auch wenn mir auch das nicht sonderlich elegant erscheint... Aber anscheinend gibt es ja keine anderen Möglichkeiten. Trotzdem Danke!!
 
G

Gast

Gast
Das ganze hört sich nach großem Blödsinn an. Warum versuchst du nicht die Ursache des Problems zu eliminieren anstatt so eine Krüppellösung zu verwenden (ich kann mir gar nicht vorstellen, warum sowas hier überhaupt vorgeschlagen wurde...).
 

Marco13

Top Contributor
Da gibt es offenbar unterschiedliche "Strömungen" in der Forengemeinde (nicht dieser hier, sondern allgemein). Wenn jemand fragt: "Jedes mal, wenn ich mit einer Kaffeetasse einen Nagel in die Wand haue, geht die Tasse kaputt - wie kann ich verhindern, dass die Tasse kaputt geht?" wollen einige tatsächlich solche Antworten wie "Nimm eine Tasse aus kohlefaserverstärktem Titan" oder "Such' dir eine weichere Wand", und nicht solche kritisch-hinterfragenden Tipps wie "Nimm' doch einfach einen Hammer".... :roll:
 

0x7F800000

Top Contributor
ich glaub ich gehöre eher zur ersten kategorie: zum einen Krieg ich Ahnung von Titanverarbeitung ;) , zum anderen ist das lustiger als ständig nur "gug in FAQ" hinzuschreiben :lol:
 

siwica

Mitglied
Nachdem wir schon bis zur Titanverarbeitung abgeschweift sind, würde ich mich freuen wieder auf das Thema zurückzukommen...

Gibt es nun eine Lösung für das Problem (abgesehen von der bereits vorgeschlagenen, die mir jedoch sehr unschön erscheint)?
Oder lässt sich das ganze nur, wie von mir vorgeschlagen mit Zuhilfenahme der Hashcodes realisieren? Ich hätte jedoch schon ganz gerne eine Parameterfreie Methode...

Grüße,
Simon
 

Wildcard

Top Contributor
Was eine Methode tut, oder auch nicht tut, sollte niemals abhängig vom Aufrufer sein. Aus gutem Grund findest du auf regulärem Weg auch nicht heraus wer dieser Aufrufer ist, das würde die Leute nur auf ganz schlechte Ideen bringen.
Überleg dir was anderes oder beschreib dein Problem im größeren Rahmen. Für die meisten Probleme existieren passende Musterlösungen (Design Patterns), allerdings müssten wir mehr über das Problem wissen um das Muster zu erkennen.
 

SegFault

Bekanntes Mitglied
Hmm was genau soll das angefrage eigentlich bringen? Warum gibts kein interface mit getLala als Funktionen welches die Klassen a,b,c implementieren müssen und dann den entsprechenden Wert liefern. Oder ähnliches. Mir fällt hier wirklich keine (Sinnvolle) Aufgabe für das Problem ein.

Und ich glaube auf den Stacktrace zu zu greiffen mag ja vielleicht funktionieren ich gehe aber mal davon aus das es langsam ist, weil ja damit in die VM eingegriffen werden muss. Also maximal für Debugging zwecke verwendbar.

Wenn du genauer sagst wozu das ganze dienen soll kann man dir vielleicht alternative Lösungsmöglichkeiten anbieten.
 

Leroy42

Top Contributor
Gast hat gesagt.:
Das ganze hört sich nach großem Blödsinn an. Warum versuchst du nicht die Ursache des Problems zu eliminieren anstatt so eine Krüppellösung zu verwenden (ich kann mir gar nicht vorstellen, warum sowas hier überhaupt vorgeschlagen wurde...).

:applaus: :applaus: :applaus:
 

voidee

Mitglied
entwickle halt ein Interface

Code:
public interface FncCallback {
  
  public Class getClassCaller();

}

dieses muss an "deine" Methode als Parameter mitübergeben werden

Code:
public Object getLala(FncCallback callback, ....) {
  String aufrufendeClass = callback.getClassCaller().getName();

  // ab hier die abängige Ermittlung
}

oder übergeb halt den "this"

Mal echt, man kann sich auch anstellen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Annotations der aufrufenden Methode ermitteln Allgemeine Java-Themen 11
W Hilfe bei Methode Allgemeine Java-Themen 14
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
Simon16 compareTo Methode überschreiben Allgemeine Java-Themen 4
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
M CrudRepository save Methode mocken Allgemeine Java-Themen 6
thor_norsk toString() - Methode Allgemeine Java-Themen 6
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
Encera Zweite Main-Methode zuschalten Allgemeine Java-Themen 18
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
E Methoden abstract static Methode Allgemeine Java-Themen 8
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
B In Java Methode mit generic input und output basteln? Allgemeine Java-Themen 4
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
T C++ Methode Übersetzung in Java Allgemeine Java-Themen 3
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
R @author vor Methode (eclipse) Allgemeine Java-Themen 1
J RotSchwarzBaum: Löschen mittels insert-Methode Allgemeine Java-Themen 20
Y Java Bruttoberechnen + runden Methode Allgemeine Java-Themen 1
R Warum ist die Methode unendlich oft rekursiv? Allgemeine Java-Themen 5
R Methoden Was fehlt mir bzw. muss ich bei der Methode countHarshabNumbers ändern damit ich die Harshad Zahlen im Intervall [51, 79] zählen kann? Allgemeine Java-Themen 19
D ArrayListe delete Methode klappt nicht Allgemeine Java-Themen 12
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
A Ist ein enum hier richtig? Enum toString() Methode. Allgemeine Java-Themen 1
Scream_ilias brute force methode verbessern? Allgemeine Java-Themen 6
Scream_ilias passwort meines pc per brute force methode knacken Allgemeine Java-Themen 4
S static methode im Interface Allgemeine Java-Themen 1
M Konstruktor einer Methode Allgemeine Java-Themen 35
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
T Sinn einer toString Methode Allgemeine Java-Themen 3
T Split() Methode funktioniert nicht?! Allgemeine Java-Themen 11
L Methoden Über Reflections eine Methode mit aufrufen Allgemeine Java-Themen 3
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
L ToString-Methode Allgemeine Java-Themen 6
X Datentypen NPE in längerer Methode Allgemeine Java-Themen 12
I Methoden Generics-Methode Allgemeine Java-Themen 3
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
T statische Variable und nicht-statische Methode Allgemeine Java-Themen 2
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
F Was ist der Dateityp meines Parameters für die Main Methode. Allgemeine Java-Themen 6
F Variablen Palindromzahl (Probleme mit Methode) Allgemeine Java-Themen 9
B APi methode kurz anhalten Allgemeine Java-Themen 8
P Methode aus anderem Paket aufrufen Allgemeine Java-Themen 1
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
R Rekursive Methode Allgemeine Java-Themen 8
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
R Wo ist mein Fehler in der Methode DRINGEND Allgemeine Java-Themen 9
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
E RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert Allgemeine Java-Themen 2
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
M Methoden Generische Methode für ArrayList Allgemeine Java-Themen 7
D HTTP Aufruf einer Methode aus einem Servlet heraus Allgemeine Java-Themen 0
C Threads Methode verhält sich merkwürdig Allgemeine Java-Themen 18
R rekursive und iterative Methode Allgemeine Java-Themen 3
P Methoden Anwendung der allMatch()-Methode Allgemeine Java-Themen 5
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
D Methoden Methode zum Steinschnitt Allgemeine Java-Themen 2
U OOP Warum kann ich aus meiner Methode keinen String auslesen Allgemeine Java-Themen 4
T Methoden Methode zum durchsuchen einer ArrayList Allgemeine Java-Themen 8
D Returnwert aus einer Methode gerundet ausgeben lassen Allgemeine Java-Themen 2
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
H Methoden Methode 'updateItem' der Klasse 'TreeCell' Allgemeine Java-Themen 3
snipesss Methode greift nicht auf JTextPanel zu Allgemeine Java-Themen 3
R Methode in Methode voraussetzen Allgemeine Java-Themen 8
S Überschriebene Methode der Oberklasse der Oberklasse aufrufen. Allgemeine Java-Themen 5
D Methode dynamisch aufrufen Allgemeine Java-Themen 2
Sogomn Methode als Parameter? Allgemeine Java-Themen 3
M Eigene forEach()-Methode funktioniert nicht. Allgemeine Java-Themen 2
KaffeeFan Methoden Suche Methode um Programm kurz warten zu lassen Allgemeine Java-Themen 22
G Methoden Aus einem Event, wo ich weiß, dass es ausgeführt werden wird, eine Get-Methode basteln Allgemeine Java-Themen 8
BRoll Methode abbrechen (Invoke von außen) Allgemeine Java-Themen 5
I Methode verallgemeinern (Methode als Parameter)? Allgemeine Java-Themen 10
D generische Interface und konkrete Methode Allgemeine Java-Themen 3
G Threads Methode nebenbei ausführen, Status verarbeiten Allgemeine Java-Themen 4
H FTP Befehl/Java Methode für Submit im z/Os (Host) Allgemeine Java-Themen 1
M Fabrik Methode, gutes Beispiel? Allgemeine Java-Themen 0
M WebService - Zugriff auf Webservice Methode über Browser Allgemeine Java-Themen 1
N WaitForScript- methode in javafx Allgemeine Java-Themen 1
2 jede Stunde Methode ausführen Allgemeine Java-Themen 8
M Eine static-Methode verlassen Allgemeine Java-Themen 2
P "Overriden statische Methode" Statische Methode die vererbt wird Allgemeine Java-Themen 5
X Komponente an Methode übergeben Allgemeine Java-Themen 1
A Methode ergibt Java NullpointerException. Allgemeine Java-Themen 3
S Getestete Methode um das Beste aus URL-Nutzereingaben rauszuholen..? Allgemeine Java-Themen 4
L Methoden Methode gibt mir beim verschlüsseln mit RSA 0 bytes aus ? Allgemeine Java-Themen 1
D Methode mit optionalen Parametern in Interface Allgemeine Java-Themen 3
C DBConnection als Methode in mehreren Klassen Allgemeine Java-Themen 4
S Methode funktioniert nicht als ActionListener Allgemeine Java-Themen 4
M Methoden Methode Auslagern Allgemeine Java-Themen 6
P 4 Threads in einer Methode Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben