Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo Leute, Ich hab ein Verständnis Problem bezüglich diesen Codes. Wäre net wenn ihr mir erklären würdet wie er funktioniert. Es handelt sich dabei um eine Aufgabe die ich für mein Studium erledigen soll. Ich hab ein Angabenblatt bekommen bei dem ich lediglich den privaten Konstruktor und die statische Methode getInstance erstellen musste. Was ich auch geschafft habe. Denn code an sich habe ich trotzdem nicht verstanden.
Java:
public class Singleton {
// Diese Variable soll spaeter die *eine* Instanz aufnehmen
private static Singleton mySingleton = null;
// Diese Variable dient dazu, die korrekte Funktion zu ueberpruefen
privateinti = 3;
private Singleton() {}
public static Singleton getInstance()
{
if (mySingleton == null)
{
mySingleton= new Singleton();
returnmySingleton;
} else
returnmySingleton;
}
public static void main(String[] args)
{
System.out.println("Start der Tests...");
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
if (s1 == null)
{
System.out.println ("Fehler: getInstance liefert beim ersten Aufruf null zurueck.");
return;
}
if (s2 == null)
{
System.out.println ("Fehler: getInstance liefert beim zweiten Aufruf null zurueck.");
return;
}
s1.i = 17;
if (s2.i == 17)
System.out.println ("Ihre Singleton-Implementierung ist korrekt.");
else
System.out.println ("Ihre Singleton-Implementierung ist fehlerhaft.");
System.out.println("Testende");
}
}
Der Code sorgt dafür dass von dieser Klasse nur eine einzige Instanz erzeugt werden kann. Das wird u.a. dadurch sichergestellt dass der Konstruktor private ist, d.h. nur innerhalb dieser Klasse kann ein neues Objekt erzeugt werden. Und dies erledigt die Methode getInstance(); Die liefert entweder das schon vorhandene Objekt zurück oder sie erzeugt ein neues und liefert es zurück.
Vielen Dank. Soweit so gut das Stand auch in meinem Angaben Blatt. Was ich aber nicht verstehe, in der Main-Methode wird s1.i = 17 deklariert und als nächstes wird in der if Anweisung gefragt ob s2.i = 17 ist. Aber ich habe s2.i = 17 nie deklariert.
Damit solltest du erkennen dass s1 und s2 das gleiche Objekt referenzieren !!
Wie gesagt: es gibt nur eine einzige Instanz dieser Klasse und getInstance() liefert diese zurück, egal wie oft du getInstance() aufrufst