亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Inhaltsverzeichnis
Verwenden von StackTraceElement
Verwenden von SecurityManager (erweitert, schneller)
Dinge, die Sie beachten sollten
Heim Java javaLernprogramm So erhalten Sie den Namen der Anruferklasse in Java

So erhalten Sie den Namen der Anruferklasse in Java

Oct 14, 2025 am 02:48 AM
java 調(diào)用者類名

Verwenden Sie Thread.currentThread().getStackTrace(), um den Namen der aufrufenden Klasse abzurufen. Stack-Frame-Index 2 entspricht dem tats?chlichen Anrufer. CallerUtils.getCallerClassName() gibt beispielsweise ?Main“ zurück, wenn die Main-Klasse aufgerufen wird. Die SecurityManager-Methode ist schneller, wurde jedoch veraltet. Bitte beachten Sie den Leistungsaufwand und die Auswirkungen des Proxy-Frameworks.

So erhalten Sie den Namen der Anruferklasse in Java

Um den Namen der Aufruferklasse in Java zu erhalten, k?nnen Sie die Stack-Trace- Informationen verwenden. Da Java keine direkte M?glichkeit bietet, auf die aufrufende Klasse zuzugreifen, überprüfen Sie den aktuellen Aufrufstapel, um festzustellen, welche Klasse (und Methode) den Aufruf get?tigt hat.

Verwenden von StackTraceElement

Java stellt die Methode Throwable.getStackTrace() bereit, die ein Array von StackTraceElement -Objekten zurückgibt. Abh?ngig vom Kontext Ihrer Methode befindet sich die Klasse des Aufrufers normalerweise eine oder zwei Ebenen weiter oben im Stapel.

  • Die aktuelle Methode befindet sich bei Index 0
  • Die aufrufende Methode befindet sich auf Index 1
  • Der Anrufer des Anrufers befindet sich bei Index 2 und so weiter

So k?nnen Sie den Namen der Anruferklasse abrufen:

?ffentliche Klasse CallerUtils {
    ?ffentlicher statischer String getCallerClassName() {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        // stackTrace[0] - Thread.getStackTrace()
        // stackTrace[1] - getCallerClassName()
        // stackTrace[2] – tats?chlicher Aufrufer
        if (stackTrace.length > 2) {
            return stackTrace[2].getClassName();
        }
        null zurückgeben;
    }
}

Beispielverwendung:

?ffentliche Klasse TestClass {
    public void someMethod() {
        System.out.println(CallerUtils.getCallerClassName());
    }
}
<p>?ffentliche Klasse Main {
public static void main(String[] args) {
new TestClass().someMethod(); // Ausgabe: Main
}
}</p>

Verwenden von SecurityManager (erweitert, schneller)

Eine Alternative (wenn auch heute weniger verbreitet) ist die Verwendung eines benutzerdefinierten SecurityManagers , um die Aufruferklasse effizienter abzurufen als das Parsen vollst?ndiger Stack-Traces.

private statische Klasse CallerResolver erweitert SecurityManager {
    String getCallerClassName() {
        Klasse> []classes = getClassContext();
        if (classes. length > 2) {
            Rückkehrklassen[2].getName();
        }
        null zurückgeben;
    }
}

Hinweis: Dieser Ansatz ist schneller, wird jedoch ab Java 17 nicht mehr unterstützt und wird m?glicherweise in zukünftigen Versionen entfernt. In modernen Anwendungen mit Vorsicht verwenden.

Dinge, die Sie beachten sollten

Beachten Sie beim Abrufen von Aufruferklassennamen Folgendes:

  • Beim Stack-Walking kommt es zu Leistungseinbu?en – vermeiden Sie dies bei leistungskritischem Code
  • Verschleierter Code (z. B. ProGuard) kann Klassen-/Methodennamen ?ndern
  • In Lambdas oder anonymen Klassen ist die aufrufende Klasse m?glicherweise immer noch korrekt, Methodennamen k?nnen jedoch synthetisch sein
  • Einige Frameworks (wie Spring AOP) verwenden Proxys, die zus?tzliche Stack-Frames hinzufügen k?nnen

Grunds?tzlich ist die Verwendung von Thread.currentThread().getStackTrace() die zuverl?ssigste und am weitesten kompatible Methode zum Abrufen des Aufruferklassennamens in Standard-Java-Anwendungen.

Das obige ist der detaillierte Inhalt vonSo erhalten Sie den Namen der Anruferklasse in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT

Stock Market GPT

KI-gestützte Anlageforschung für intelligentere Entscheidungen

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

Wie bekomme ich die Klasse eines Objekts in Java? Wie bekomme ich die Klasse eines Objekts in Java? Sep 26, 2025 am 04:58 AM

Verwenden Sie die GetClass () -Methode, um die Laufzeitklasse des Objekts wie Str.GetClass () zu erhalten, um das Klassenobjekt zurückzugeben. Für Typen k?nnen Sie die Syntax der String.Class -Syntax direkt verwenden. Die Klassenklasse enth?lt Methoden wie GetName (), GetImplename (), um Klasseninformationen wie num.getClass () zu erhalten. GetImplename (), um Ganzzahl auszugeben.

Wie bekomme ich das aktuelle Arbeitsverzeichnis in Java? Wie bekomme ich das aktuelle Arbeitsverzeichnis in Java? Sep 26, 2025 am 05:51 AM

ThecurrentworkingDirectoryinjavacanbeoBtainedusingStem.getProperty ("user.dir"), whitReturnStheAbSolutepathwheretheProgramwashaslaunted; alternativ, paths.get

Was ist das Konzept der Generika in Java? Was ist das Konzept der Generika in Java? Sep 26, 2025 am 05:19 AM

GenericSinjavaprovidecompile-TimetypeSafetyandeliminateneedForcastingByaloklulenclasses, Schnittstellen und Methodstooperattypeparameter;

So l?schen Sie Cache und Cookies einer einzelnen Website UC -Browser. Der UC -Browser zielte auf Website -Cache Cookies F?higkeiten So l?schen Sie Cache und Cookies einer einzelnen Website UC -Browser. Der UC -Browser zielte auf Website -Cache Cookies F?higkeiten Sep 26, 2025 pm 12:33 PM

Caches und Cookies k?nnen für bestimmte Websites gereinigt werden, um die UC -Browser -Seite zu beheben, um Ausnahmen zu laden. 1. Gehen Sie zu Einstellungen → Datenschutz und Sicherheit → Website -Datenverwaltung, suchen Sie nach der Zielwebsite und l?schen Sie ihre Daten. 2. Verwenden Sie den unsichtbaren Browsermodus, um auf die Problem -Website zuzugreifen, um die Datenbindung zu vermeiden. 3. Setzen Sie den Speicher zurück, indem Sie die Website -Berechtigungen deaktivieren und aktivieren, und erzwingen Sie den alten Cache.

So exportieren Sie History -Aufzeichnungen von Wukong Browser_Wukong Browser Browser History Export- und Backup -Methode So exportieren Sie History -Aufzeichnungen von Wukong Browser_Wukong Browser Browser History Export- und Backup -Methode Sep 26, 2025 pm 12:54 PM

Sie k?nnen den Wukong -Browser -Verlauf sichern, indem Sie manuell aufzeichnen, Datenbanken oder automatisierte Skripte extrahieren. Zun?chst k?nnen Sie die History -Seite eingeben, um Fotos zu kopieren oder zu machen und manuell zu speichern. Zweitens k?nnen Sie mit dem Dateimanager auf den Dateimanager zugreifen, wenn das Ger?t verwurzelt ist, auf die /data/data/com.wukong.browser/databases/ -Pfad zugreifen. Schlie?lich k?nnen Sie für rootless-Ger?te auto.js und andere Tools zum Schreiben von Skripten verwenden, den Barrierefreiheit Service aufrufen, um die historische Seite automatisch zu schieben und Screenshots zum Archivieren zu machen und eine halbautomatische Sicherung zu realisieren.

Echtzeit-Computing-Framework, das durch Zeit und Raum reisen kann-Flink-Verarbeitung von Zeit Echtzeit-Computing-Framework, das durch Zeit und Raum reisen kann-Flink-Verarbeitung von Zeit Sep 28, 2025 am 11:06 AM

Flink ist für die Stream -Verarbeitungsarchitektur sehr wichtig. Kafka gibt Nachrichten die M?glichkeit, weiterhin zu bestehen, und die F?higkeit, Daten zu verarbeiten und sogar Zeitreisen zu verarbeiten, h?ngt vom Flink ab. Im Streaming-die Zukunft der Big Data wissen wir, dass die beiden wichtigsten Dinge für die Streaming-Verarbeitung und Zeitpunkte für Zeitgel?nde sind. Und Flink hat sehr gute Unterstützung für beide. Flink garantiert die Korrektheit. Für kontinuierliche Ereignisstromdaten, da Ereignisse m?glicherweise nicht bei der Verarbeitung gekommen sind, kann die Richtigkeit der Daten beeintr?chtigt werden. Die übliche Praxis nimmt nun hochleitige Offline-Berechnungen an, um die Korrektheit zu gew?hrleisten, aber auch eine geringe Latenz opfert. Die Richtigkeit des Flinkes spiegelt sich in der Definition des Berechnungsfensters in übereinstimmung mit der Datenerzeugung wider

Wie benutze ich eine für Schleife mit einem Z?hler in Java? Wie benutze ich eine für Schleife mit einem Z?hler in Java? Sep 30, 2025 am 11:24 AM

AstorloopinjavauSeSacountertorepeatcode: initialisieren (z. B. Inti = 0), setCondition (z. B. i

Wie benutze ich einen Versuchsblock ohne einen Haken in Java? Wie benutze ich einen Versuchsblock ohne einen Haken in Java? Sep 26, 2025 am 05:27 AM

Atry-finallyblockensurescleanUpcoderUnevenifanexceptionocccurs, Withouthandlingitlocally.2.ISUSEDWENEDEXCEPTIONSARETOPRAPAGATEDUPTHECALLSTACK.3.The definallyblockalwaysexecutes, ob Anexceptionoccursornot, EnablingreliebanSourceClancleanup.4.4.4.4.4.

See all articles