Angenommen, ich hätte eine Java-Klasse mit einer statischen Methode, so:
%Vor%Und weiter angenommen, dass Klasse A eine beliebige Anzahl von Unterklassen hat:
%Vor%Betrachten Sie nun die folgenden Methodenaufrufe:
%Vor% Meine Frage ist, wie kann die Methode foo()
sagen, welche Klasse sie aufruft?
Das geht nicht, und das ist ein Teil des Problems mit statischen Methoden. Für den Compiler sind A.foo()
und B.foo()
genau dasselbe. Tatsächlich kompilieren sie auf denselben Bytecode. Sie können nicht ähnlicher werden.
Wenn Sie diese Art von Informationen wirklich benötigen, verwenden Sie einen Singleton und verwandeln Sie foo()
in eine Instanzmethode. Wenn Ihnen die statische Syntax immer noch gefällt, können Sie eine Fassade A.foo()
erstellen.
Obwohl Sie nicht herausfinden können, für welche Klasse die statische Methode aufgerufen wurde, ist es möglich herauszufinden, welche Klasse die Methode zur Laufzeit aufgerufen hat:
%Vor%Ich sage nicht, dass dies eine gute Praxis ist, und es ist wahrscheinlich auch aus Performance-Sicht nicht großartig, aber es sollte funktionieren. Ich weiß nicht, ob dir das hilft ...
Tags und Links java reflection