Was sind die Java-Entsprechungen von Pythons __file__, __name__ und Object .__ class __.__ name__?

8

In Python können Sie den Pfad der Datei abrufen, die über% co_de ausgeführt wird.% Gibt es eine Java-Entsprechung?

Gibt es auch eine Möglichkeit, das aktuelle Paket in __file__ zu bekommen?

Und schließlich, was ist eine gute Ressource für Java-Introspektion?

    
NorthIsUp 25.10.2010, 22:48
quelle

4 Antworten

9

this.getClass () = aktuelle Klasse
this.getClass (). getPackage () = aktuelles Paket
Class.getName () = String des Klassennamens
Package.getName () = Zeichenfolge des Paketnamens

Ich glaube, Sie suchen nach der Reflection API, um das Äquivalent von Introspektion zu erhalten (http://download.oracle.com/javase/tutorial/reflect/).

    
cwallenpoole 25.10.2010, 22:56
quelle
4

@ Christophers Antwort behandelt das Problem des Klassennamens.

AFAIK, die Standard-Java-Klassenbibliothek bietet keine direkte Möglichkeit, den Dateinamen für die Klasse eines Objekts zu erhalten.

Wenn die Klasse mit der entsprechenden Option "-g" kompiliert wurde, können Sie möglicherweise den Klassennamen indirekt wie folgt abrufen:

  • Erstellen Sie ein Ausnahmeobjekt in einer der Klassenmethoden.
  • Erhalten Sie die Stack-Informationen der Ausnahme mit Throwable.getStackTrace() .
  • Holen Sie das Stacktrace-Element für die aktuelle Methode und verwenden Sie StackTraceElement.getFilename() , um den Quelldateinamen abzurufen.

Beachten Sie, dass dies möglicherweise teuer ist, und es gibt keine Garantie dafür, dass ein Dateiname zurückgegeben wird oder dass dies der erwartete Wert ist.

    
Stephen C 26.10.2010 00:46
quelle
3

Sie können den Ordner (ohne Pakete) mit der Klassendatei abrufen:

%Vor%     
Matt Crinklaw-Vogt 26.10.2010 02:26
quelle
1

Sie können die Reflektion verwenden, um den Stacktrace zu navigieren:

%Vor%     
tyranitar 27.04.2013 10:02
quelle

Tags und Links