ich bemerkt, wenn sie durch einen Teil der Java-Code bei meiner Arbeit suchen, dass, wenn wir die Logging-Framework in jeder Klasse zu initialisieren haben wir so etwas wie:Gibt es einen Grund, 'ClassName.class' gegenüber 'this.getClass()' vorzuziehen, um eine Instanz des Klassenobjekts zu erhalten?
private final Logger log = Logger.getLogger(Foo.class);
Dies hat mir denken, gibt es keinen Grund, dass wir Foo.class
verwenden eher als:
private final Logger log = Logger.getLogger(this.getClass());
Ist das einfach eine Vorliebe oder gibt es einen praktischen Grund, einen vor dem anderen zu bevorzugen?
Edit: ursprünglich die Code-Snippets referenzierte statische Mitglieder, die offensichtlich nicht kompiliert hätten.
Siehe auch http://stackoverflow.com/questions/10725402/generic-way-of-getlogger-from-log4j-logger –
Wenn Sie in einem nicht-statischen Kontext waren, könnten Sie entweder, aber sie sind von unterschiedlicher Art: 'Foo.class' ist vom Typ' Class'; 'aFoo.getClass()' hat den Typ 'Class erweitert Foo> '. –
Mein Fehler, ich habe den Logging-Code kopiert und eingefügt und das 'static' dort nicht bemerkt. Das war nicht beabsichtigt. Ich werde die ursprüngliche Frage bearbeiten. –