Aufgebaute Exemplare mitzählen

Ein Konstruktor soll die Anzahl der erzeugten Objekte mitzählt; eine statische Methode liefert später die bis dahin gebauten Exemplare:

public class Rollercoaster {




  private static int numberOfInstances;




  {

    numberOfInstances++;

  }




  public static int getNumberOfInstances() {

    return numberOfInstances;

  }




  public static void main( String[] args ) {

    new Rollercoaster();

    new Rollercoaster();




    System.out.println( Rollercoaster.getNumberOfInstances() ); // 2

  }

}

Die statische Variable numberOfInstances wird bei jedem neuen Exemplar über den Konstruktor hochgesetzt. Direkt ausgeschrieben ist der Konstruktor nicht, sondern es findet ein Exemplarinitialisierer Anwendung, da der Compiler den Code automatisch in jeden Konstruktor kopiert. Das hat den Vorteil, dass Entwickler später problemlos neue Konstuktoren für den Rollercoaster hinzufügen können, ohne das Inkrement der statischen Variable immer im Hinterkopf behalten zu müssen.

Hinweis: Bei nebenläufigen Zugriffen auf statische Variablen kann es zu Problemen kommen. Deshalb müssen wir spezielle Synchronisationsmechanismen nutzen – die das Beispiel allerdings nicht verwendet. Statische Variablen können auch schnell zu Speicherproblemen führen, da Objektreferenzen sehr lange gehalten werden. Der Einsatz muss wohldurchdacht sein.

Über Christian Ullenboom

Ich bin Christian Ullenboom und Autor der Bücher ›Java ist auch eine Insel. Einführung, Ausbildung, Praxis‹ und ›Java SE 8 Standard-Bibliothek. Das Handbuch für Java-Entwickler‹. Seit 1997 berate ich Unternehmen im Einsatz von Java. Sun ernannte mich 2005 zum ›Java-Champion‹.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.