Java-Klassenmitgliedsinitialisierung

8

Ich schäme mich ein bisschen, das zu fragen, seit Jahren Java-Programmierer zu sein, aber hier ist:
Gibt es einen Unterschied zwischen der Zuordnung von Objekten während der Konstruktion und direkt bei der Deklaration des relevanten Feldes? Das heißt, gibt es einen Unterschied zwischen den folgenden zwei:

%Vor%

AND

%Vor%

Natürlich nehme ich an, dass diese spezifischen Init's nicht auf äußeren Parametern beruhen.

    
David 17.09.2010, 13:28
quelle

2 Antworten

3
  

Initialisierung der Instanzvariablen erfolgt vor Konstruktoraufruf

     

Es ist nicht gut zu tun.
  Sie können Benutzer vom Aufruf von const einschränken. wenn Sie bestimmte Operationen vor der Initialisierung ausführen möchten.

Best Practice:

  
  1. Initialisieren Sie nicht mit den Standardwerten in der Deklaration (null, false, 0, 0.0 ...).
  2.   
  3. Ziehen Sie die Initialisierung in der Deklaration vor, wenn Sie keinen Konstruktorparameter haben, der den Wert des Feldes ändert.
  4.   
  5. Wenn sich der Wert des Feldes wegen eines Konstruktor-Parameters ändert, setzen Sie die & gt; -Initialisierung in den Konstruktoren.
  6.   
  7. Sei konsistent in deiner Praxis. (die wichtigste Regel)
  8.   

aus hier

    
Jigar Joshi 17.09.2010, 13:31
quelle
2

Nein, ist es nicht. Nur wenn Sie mehrere Konstruktoren hinzufügen, haben Sie doppelten Code.

Eine Alternative ist die Verwendung eines Initialisierungsblocks

%Vor%

Referenz: Initialisierungsfelder

    
Bozho 17.09.2010 13:32
quelle