Hallo,
ich habe eine Frage zzum Löschen von Objekten. Um mein Problem verständlich zu machen bemühe ich mal ein Beispiel. Als Beispiel habe ich ein Lehrer-Objekt das eine Liste aller Klassen verwaltet, die der Lehrer unterrichtet. Das Objekt "SchoolClass" weiß nichts von einem Lehrer, hat aber eine Beziehung zu einem Raum in dem die Klasse verweilt.
Um Sinn oder Unsinn der Beziehungen der Objekte untereinander soll es hier nicht gehen. Die sind halt so.
Der folgende Test soll Drei Objekte vom Typ Teacher, SchoolClass und Room erzeugen, diese verknüpfen und anschließend alles wieder löschen.
Die Frage, die sich mir jetzt stellt: Löscht der GC jetzt auch wirklich alles? Also den Lehrer müsste er löschen, aber wie sieht es mit class1 und room1 aus? Nach außen hin wurden die Referenzen ja gekappt. Aber intern hängen die beiden Objekte ja noch zusammen. Erkennt der GC, dass die beiden Objekte zwar untereinander verbunden aber nach außen trotzdem isoliert sind?
ich habe eine Frage zzum Löschen von Objekten. Um mein Problem verständlich zu machen bemühe ich mal ein Beispiel. Als Beispiel habe ich ein Lehrer-Objekt das eine Liste aller Klassen verwaltet, die der Lehrer unterrichtet. Das Objekt "SchoolClass" weiß nichts von einem Lehrer, hat aber eine Beziehung zu einem Raum in dem die Klasse verweilt.
Java:
public class Teacher{
private Set<SchoolClass> schoolClasses = new LinkedHashSet<SchoolClass>
public void addSchoolClass(..)
public void clearclassList()
}
Java:
public class SchoolClass{
Room currRoom;
public void setRoom(Room r)
{
this.currRoom = r;
}
}
Java:
public class Room{
...
}
Um Sinn oder Unsinn der Beziehungen der Objekte untereinander soll es hier nicht gehen. Die sind halt so.
Der folgende Test soll Drei Objekte vom Typ Teacher, SchoolClass und Room erzeugen, diese verknüpfen und anschließend alles wieder löschen.
Java:
public class removeTest {
Teacher teacher1;
SchoolClass class1;
Room room1;
@Test
public void testRemoveTeacher() {
teacher1 = new Teacher();
class1 = new SchoolClass();
room1 = new Room();
class1.setRoom(room1);
teacher1.addSchoolClass(class1);
//Alles soll gelöscht werden.
class1 = null;
room1 =null;
teacher1.clearClassList();
teacher1 = null;
}
}