Slyh: Aufrufende Klasse / Objekt finden

Beitrag lesen

Hallo,

Ist mir jetzt spontan eingefallen:
Gibt es (gibt es bestimmt!) eine Möglichkeit in einem Objekt herauszufinden in welcher Klasse bzw. welchem Objekt es instanziert worden ist? Oder wenn eine Methode ausgeführt wird, woher der Aufruf kommt?
Wie schon geschrieben, muss ja gehen (mit Reflection?), da eine Exception ja auch einen kompletten StackTrace liefert!

Damit liegst du schonmal gar nicht so falsch. Um den Aufrufer heraus-
zufinden, kannst du nämlich eine neue Exception erzeugen, und dann
den Stacktrace auswerten.
Wie das geht, ist z.B. in einem der Sun Tech Tips beschrieben.

Du kriegst allerdings sowohl Klassen- als auch Methodenname nur als
String heraus, und nicht etwa als Class- oder Method-Objekt. Über
Reflections sollte es aber ein leichtes sein, diese Objekte zu
generieren.

Eine andere Möglichkeit an die aufrufenden Objekte/Methoden zu
kommen, wird es wohl nicht geben, wenn es sogar Sun über eine
"künstliche" Exception macht.

Direkt über Reflections kannst du den Aufrufer wohl nicht herausfinden.
Beachte, daß viele systemnahe Methoden "native" sind. Z.B. ist die
Methode Throwable.fillInStackTrace(), die für die Exception
letztendlich den Stacktrace ermittelt, native. Genauso getStackTrace().

Gruß
Slyh