Aus welcher Klasse wird aufgerufen?

chuvak

Erfahrenes Mitglied
Ich habe mehrere Klasse, eine davon heißt "View" und eine andere "DB".
Wenn ich jetzt von der View aus die DB aufrufe, möchte ich innerhalb der DB "rausfinden", aus welcher Klasse die DB aufgerufen wurde.
Durch einen Parameter einfach "view" übergeben möchte ich nicht.

Gibt es eine andere Möglichkeit?
Z.B. dass die Klasse View irgendwie "sich selbst übergibt" bzw. eine Instanz?
 
Hi,

du könntest ein leeres Interface namens "DBCaller" machen und "View" das inplementieren lassen.
Dann machst du in der Funktion in der "DB" einen Parameter vom Typ "DBCaller".
Somit kannst du die Funktion dann aus der "View" raus wie folgt aufrufen:

Java:
db.funktionsname(this);

In der Funktion kannst du dann mit instanceof() herausfinden, welche Klasse jetzt die Funktion aufgerufen hat.

Gruß
BK
 
Der erste Google Treffer brachte mir ausreichende Ergebnisse. Ein Beispiel für dich (ohne Fehler abzufangen)

Java:
class Main {
	public static void main(String[] args) {
		new A().a();
	}
}

class A {
	void a() {
		new B().b();
	}
}

class B {
	void b() {
		Throwable t = new Throwable();
		StackTraceElement[] trace = t.getStackTrace();
		System.out.printf("B.b() wurde von %s.%s aufgerufen.%n", trace[1].getClassName(), trace[1].getMethodName());
	}
}

Aber vom Design her sollte es der Methode egal sein, wer sie aufruft!
 
Zurück