Announcement

Collapse
No announcement yet.

Statische Variablen (Lebenszyklus)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Statische Variablen (Lebenszyklus)

    Also wenn ich Klassen als Singleton schreibe (eine statische Variable damit nur eine Instanz dieser Klasse existiert) ist dann auch sichergestellt das diese statische Variable auch bis zum Ende des Programmes im Speicher bleibt, oder wird sie wieder entfernt sobald keine Referenz mehr auf diese Klasse zeigt?

    mfG Tobias Oelgarte

  • #2
    Hallo Thomas!

    Eine gaengige Implementierung sieht so aus: <br>
    <pre>
    public class Singleton {

    private Singleton() {
    }

    public static Singleton getInstance() {
    if (instance == null) {
    instance = new Singleton();
    }
    return instance;
    }

    ...

    private static Singleton instance;
    }
    </pre>
    Neben den Referenzen, welche Du auf die einzige Instanz dieser Klasse haelst, indem Du <code>getInstance()</code> aufrufst, gibt es ja immer noch die Referenz <code>instance</code>, welche static in der Klasse deklariert ist, und nach erstem Aufruf von getInstance ebenfalls auf dieses einzige Objekt verweist. Diese Refernz bleibt (weil static) immer bestehen, es sei denn, Du setzt sie explizit auf <code>null</code>. Also: Keine Gefahr durch den GC fuer Dein Singleton ...
    <p>
    Herzliche Gruesse aus dem kuehlen Norden,
    Stefa

    Comment


    • #3
      <b>Danke Stefan</b>, find ich echt Klasse das du mir geholfen hast und ich jetzt Klarheit habe.

      mfG Tobias Oelgart

      Comment

      Working...
      X