Sie haben drei Auswahlmöglichkeiten. Sie können das aufrufende Objekt an die Bar-Methode übergeben:
Class A {
foo() {
new B().bar(this);
}
}
Class B {
bar(A caller) {
...
}
}
Oder Sie können die Klasse B zu einer inneren Klasse der Klasse A machen:
Class A {
foo() {
new B().bar();
}
Class B {
bar() {
A caller=A.this;
...
}
}
}
Wenn Sie nur die Klasse und nicht die Objektinstanz benötigen, haben Sie eine dritte Möglichkeit. Durch die Verwendung von Thread.currentThread().getStackTrace()
können Sie den qualifizierten Namen einer Klasse an einer beliebigen Stelle im Stapel abrufen und mit Hilfe von Reflection die Klasseninstanz erhalten. Aber das ist so schrecklich, dass Sie entweder Ihr Design korrigieren sollten oder (wenn Sie Ihren eigenen Debugger oder etwas ähnliches schreiben) ein einfacheres Projekt versuchen sollten, bis Sie genug über Java wissen, um diese Art von Dingen selbst herauszufinden...
0 Stimmen
Es klingt für mich so, als ob Sie versuchen, damit ein bestimmtes Problem zu lösen. Können Sie uns sagen, welches Problem Sie tatsächlich zu lösen versuchen? Für das eigentliche Problem gibt es wahrscheinlich eine einfachere Lösung.
0 Stimmen
@matt b: ich wollte gerade diesen Kommentar schreiben