Alsoo erstmal hallo an alle Leser das ist mein erster Beitrag in diesem Forum und ich hoffe ihr könnt mir helfen
Ich habe folgendes Problem: Wir sollen eine Klasse schreiben die folgendes macht ...
jede Instanz die erstellt wird soll in einer statischen ArrayList gespeichert werden. Mein Problem ist, dass ich keinen Plan habe wie ich besagte Instanz nach der Erstellung in besagter ArrayList speichern soll :rtfm: .
was hast du denn bis jetzt gemacht? Wenn wir dir eine Lösung vorgeben würden, würdest du nicht viel daraus lernen. Also schau mal in die JavaDocs rein und guck dir da die Klasse ArrayList an. Vielleicht hilft dir das ja schonmal weiter
publicclassSampleClass{privatestaticint i =0;//Zum zählen der erstellten InstanzenprivatestaticArrayList<SampleClass> array =newArrayList<SampleClass>();//Hier sollen die Instanzen gespeichert werden publicSampleClass(){
array.add(newSampleClass());//führt zu einem Fehler beim erstellen einer Instanz java.lang.StackOverflowError
i++;}/**
* Gibt die Anzahl der erstellten Instanzen zurück
*/publicintgetAnzahl(){return i;}}
publicclassSampleClass{privatestaticint i =0;//Zum zählen der erstellten InstanzenprivatestaticArrayList<SampleClass> array =newArrayList<SampleClass>();//Hier sollen die Instanzen gespeichert werden publicSampleClass(){}publicstaticvoidcreateInstance(){
array.add(newSampleClass());
i++;}/**
* Gibt die Anzahl der erstellten Instanzen zurück
*/publicintgetAnzahl(){return i;}}
nennen, sonst könnte man annehmen es wäre eben ein Array und keine Collection[/TIPP]
[EDIT]mal abgesehen davon hatten wir vorgestern erst einen komplett identischen Thread, warum nicht einfach erstmal suchen anstatt für jede hier schon drölfzig mal exestierende Kleinigkeit ein neuen Post zu eröffnen [/EDIT]
publicclassSampleClass{privatestaticint i =0;//Zum zählen der erstellten InstanzenprivatestaticArrayList<SampleClass> array =newArrayList<SampleClass>();//Hier sollen die Instanzen gespeichert werden publicSampleClass(){
array.add(newSampleClass());//führt zu einem Fehler beim erstellen einer Instanz java.lang.StackOverflowError
i++;}}
Also dein Problem ist, dass du im Kontruktor eine neue Instanz erstellst. Blöd ist nur, dass wenn du eine neue Instanz erstellst der Konstruktor erneut aufgerufen wird. Immer und immer wieder und dies führt zum StackOverflow
Die Lösung ist mit Hilfe des Keywords this möglich wie kaoZ schon geschrieben hat
Abgesehen davon sollte die Methode getAnzahl() statisch sein, sonst könnte man von außen meinen die Anzahl i sei eine Instanz-Variable oder du nutzt gleich die Methode size() der ArrayList, die direkt die Anzahl der Elemente in der ArrayList zurückgibt.