Sollte der Logger als statisch deklariert werden oder nicht? Normalerweise habe ich zwei Arten von Deklarationen für einen Logger gesehen:
protected Log log = neuer Log4JLogger (aClass.class);
oder
privates statisches Protokoll log = neuer Log4JLogger (aClass.class);
Welches sollte verwendet werden? Was sind die Vor- und Nachteile von beiden?
static
ist eine Referenz pro Klasse. Nicht statisch ist eine Referenz pro Instanz (+ Initialisierung). In einigen Fällen hat letzteres erhebliche Auswirkungen auf den Speicher, wenn Sie Tonnen von Instanzen haben. Verwenden Sie das Nicht-Statische niemals in einem häufigen Objekt. Ich benutze immer die statische Version. (was in Großbuchstaben geschrieben werden sollte LOG
)
private static final Log log
Kleinbuchstaben sein. Der Logger ist keine Konstante, der Logger ist ein statisches Endobjekt (das mutiert werden kann). Persönlich benutze ich immer logger
.