Statischer Block und private statische Methode für die Initialisierung statischer Elemente

9

Eine statische Variable kann mit den privaten statischen Methoden oder mit einem statischen Block initialisiert werden. Gibt es einen feinen Unterschied zwischen den beiden? Gibt es eine Situation, in der ich die statische Methode zur Initialisierung statischer Member nicht verwenden kann? Ich fand das später lesbarer.

Statische Blockinitialisierung:

%Vor%

Initialisierung der privaten statischen Methode:

%Vor%

Ich bevorzuge die zweite, da sie besser lesbar ist. Gibt es irgendeine Situation, die ich nur zuerst verwenden muss (statische Blöcke)?

Was ist die beste Kodierungskonvention / Design für die Initialisierung statischer Member (sowohl final als auch variable)? Sogar von diesem Thread habe ich gelernt, dass private statische Methoden einen Vorteil haben über die statischen Blöcke.

Danke,

    
Mohan 23.07.2012, 18:48
quelle

3 Antworten

2

Der statische Block wäre notwendig (oder zumindest nützlich), wenn zwei verschiedene Variablen zusammenhängen und nicht unabhängig voneinander initialisiert werden können.

Angenommen, Sie müssen beispielsweise zwei Werte aus einer Datei lesen. Sie könnten beide Werte in einem zusätzlichen Objekt speichern. Aber wenn Sie wirklich zwei Konstanten wollen, ist ein statischer Block nützlich.

    
JB Nizet 23.07.2012 18:50
quelle
2

Ich würde vorschlagen, die Syntax zu verwenden, die Ihren Code sauber und lesbar hält:

  • Wenn die Initialisierung zu einer, maximal zwei, sehr einfachen Codezeilen führt, dann gehe mit dem statischen Block;

  • Wenn die Initialisierung eine komplexe Operation ist, dann ist eine Methode mit einem guten Namen am besten;

  • Im Zweifelsfall verwenden Sie die Methodensyntax und verwenden den Methodennamen, um nicht nur zu deklarieren, welche Variable, sondern auch wie Sie initialisieren (d. h. initializeValueWithRandomNumber ());

Matteo Caprari 23.07.2012 19:04
quelle
1
  1. static Initializer block (Ihre 1 Option) wird ausgeführt, wenn die JVM die Klasse lädt, sogar bevor eine static Variable initialisiert wird.

  2. Es ist ein guter Ort, um alle statischen Variablen gleichzeitig zu haben.

  3. Ihre zweite Option kann optional verwendet werden, um mehrere static -Variablen zu initialisieren, indem Sie dem Parameter der Initialisierungsmethode mehrere Argumente übergeben.

Kumar Vivek Mitra 23.07.2012 18:56
quelle