Hey Leute,
ich sitz nun seit zwei Tagen über dem folgenden Problem und komme nicht weiter.
Der vereinfachte Codeschnipsel repräsentiert eine Funktionalität aus einem Programm, an dem ich gerade arbeite. Einen Workaround habe ich bereits gefunden, doch interessiert mich was hier genau passiert und warum.
Ich verstehe einfach nicht, warum das Objekt "l0", das über eine ArrayList verfügt, die Objekte vom Typ "Termin" aufnehmen kann, nach speichern seiner Referenz in einer ArrayList (hier: "tmpListe") und anschließendem "löschen" der Inhalte der "tmpListe" und erneutem Versuch des Speicherns der Referenz in "tmpListe" nicht mehr verfügbar ist (siehe entsprechende Kommentarzeilen).
Hier die Klassen "Listen":
Und hier die Klasse "Termin":
Ausgabe:
Kaffee jetzt
Rauchen später
2
0
Vielen Dank im Voraus!
ich sitz nun seit zwei Tagen über dem folgenden Problem und komme nicht weiter.
Der vereinfachte Codeschnipsel repräsentiert eine Funktionalität aus einem Programm, an dem ich gerade arbeite. Einen Workaround habe ich bereits gefunden, doch interessiert mich was hier genau passiert und warum.
Ich verstehe einfach nicht, warum das Objekt "l0", das über eine ArrayList verfügt, die Objekte vom Typ "Termin" aufnehmen kann, nach speichern seiner Referenz in einer ArrayList (hier: "tmpListe") und anschließendem "löschen" der Inhalte der "tmpListe" und erneutem Versuch des Speicherns der Referenz in "tmpListe" nicht mehr verfügbar ist (siehe entsprechende Kommentarzeilen).
Java:
import java.util.ArrayList;
public class Main
{
Listen l0 = new Listen("dieListe");
ArrayList <Termin> tmpListe = new ArrayList <Termin>();
public static void main(String[] args)
{
Main start = new Main();
}
public Main()
{
Termin t0 = new Termin("Kaffee ", "jetzt");
Termin t1 = new Termin("Rauchen ", "später");
l0.addTermin(t0);
l0.addTermin(t1);
l0.ausgabe(); //Kaffe jetzt, Rauchen später
zwischenSpeichern();
System.out.println(tmpListe.size()); // 2
tmpListe.clear();
zwischenSpeichern();
//Warum beim zweiten Mal Größe = 0 und keine Ausgabe?
//wieso gehen die Referenzen in l0 verloren?
System.out.println(tmpListe.size()); // 0
l0.ausgabe(); // nix
}
public void zwischenSpeichern()
{
tmpListe = l0.getListe();
}
}
Hier die Klassen "Listen":
Java:
import java.util.ArrayList;
public class Listen
{
String name;
ArrayList<Termin> monatsListe = new ArrayList<Termin>();
public Listen()
{
name ="";
}
public Listen(String name)
{
this.name=name;
}
public ArrayList<Termin> getListe()
{
return monatsListe;
}
public void ausgabe()
{
for(Termin x: monatsListe)
{
System.out.println(x.getWas()+x.getWann());
}
}
public void addTermin(Termin x)
{
monatsListe.add(x);
}
}
Und hier die Klasse "Termin":
Java:
public class Termin
{
String was;
String wann;
public Termin()
{
was="";
wann="";
}
public Termin(String was, String wann)
{
this.was=was;
this.wann=wann;
}
public String getWas()
{
return was;
}
public String getWann()
{
return wann;
}
}
Ausgabe:
Kaffee jetzt
Rauchen später
2
0
Vielen Dank im Voraus!
Zuletzt bearbeitet von einem Moderator: