cuchulainn
Mitglied
Hallo,
ich soll eine Klasse programmieren, die bestimmte Funktionen für Arrays anbietet. Unter anderem gibt es die Funktion, die Länge des Arrays zu ändern.
Die Klasse hat ein int-Feld namens "feld" einer vorgegebenen Länge als Attribut. Wenn der Benutzer die Funktion "neueDimension" aufruft, kann er eine neue Länge eingeben, und die Länge des Attributs wird auf diese Länge gesetzt.
Ich habe mir das ganze folgendermaßen überlegt: Ich kopiere die Werte aus "feld" in ein Puffer-Array. Dann erstelle ich ein neues Feld namens "feld" mit der neuen Länge und kopiere die Werte wieder hinein. Mein Problem ist nun, dass ich das Array mit der alten Länge nicht freigeben kann.
Mein Quelltext sieht folgendermaßen aus:
Ich hoffe, ich konnte das Problem verständlich machen. So viel ich weiß gibt es in Java keine Möglichkeit, ein Objekt freizugeben wie in C++ oder Delphi (mit den Sprachen habe ich vorher gearbeitet). Kann mir jemand helfen?
Gruß
Cuchulainn
ich soll eine Klasse programmieren, die bestimmte Funktionen für Arrays anbietet. Unter anderem gibt es die Funktion, die Länge des Arrays zu ändern.
Die Klasse hat ein int-Feld namens "feld" einer vorgegebenen Länge als Attribut. Wenn der Benutzer die Funktion "neueDimension" aufruft, kann er eine neue Länge eingeben, und die Länge des Attributs wird auf diese Länge gesetzt.
Ich habe mir das ganze folgendermaßen überlegt: Ich kopiere die Werte aus "feld" in ein Puffer-Array. Dann erstelle ich ein neues Feld namens "feld" mit der neuen Länge und kopiere die Werte wieder hinein. Mein Problem ist nun, dass ich das Array mit der alten Länge nicht freigeben kann.
Mein Quelltext sieht folgendermaßen aus:
Code:
// feld ist das Attribut der Klasse
public void neueDimension(int d) {
// Pufferfeld anlegen
int [] puffer = new int[feld.length];
// Pufferfeld mit den Daten füllen
for (int i = 0; i <= feld.length - 1; i++) {
puffer[i] = feld[i];
}
// Feld mit neuer Dimension erstellen. Hier müsste ich das alte Feld freigeben
int [] feld = new int[d];
// Neues Feld mit Daten füllen
for (int i = 0; i <= feld.length - 1; i++) {
feld[i] = puffer[i];
}
}
Ich hoffe, ich konnte das Problem verständlich machen. So viel ich weiß gibt es in Java keine Möglichkeit, ein Objekt freizugeben wie in C++ oder Delphi (mit den Sprachen habe ich vorher gearbeitet). Kann mir jemand helfen?
Gruß
Cuchulainn