Ich möchte den Programmierern, die meinen Code verwenden, durch Reflektion etwas Bequemlichkeit bieten. Um mein gewünschtes Ergebnis zu erreichen, möchte ich das Klassenobjekt für Klassen erhalten, die meinen Code erweitern. Auch wenn sie die statische Methode, auf die ich zugreifen möchte, nicht überschreiben können, wäre es momentan hilfreich. Ich könnte am Ende einfach das Design etwas umgestalten, um diese Situation zu vermeiden, aber ich wollte diese Frage an die Community weitergeben.getClass() und statische Methoden: Was ist die beste Vorgehensweise?
Die einzige Möglichkeit, dies zu erreichen, die ich kenne, ist, den aktuellen Thread zu nehmen, den Stack-Trace zu navigieren und den Klassennamen zu extrahieren und ihn dann in eine tatsächliche Instanz der Klasse umzuwandeln.
Haben Sie noch weitere Vorschläge?
Randnotiz: Der obige Ansatz ist auch die einzige Möglichkeit, dass ich die Aufrufmethode kennen.
Das ist, wovor ich wirklich Angst habe. Für das, was ich tue, statische Methoden, die Instanzen der Klassen zurückgeben, die sie repräsentieren, unterstützt durch eine reflexionsbasierte automatische Verdrahtung. Ich denke, ich werde die Refactor-Route gehen und eine zentrale Factory-Klasse haben, die sowohl eine Klasse als auch die ursprüngliche Anfrage akzeptiert. –
Oh, aber die statische Methode "repräsentiert" nur die Klasse, in der sie deklariert wurden. Sie * werden * eine Klasseninstanz benötigen. Siehe mein Beispiel in/EDIT 1/über –