destruktor

Status
Nicht offen für weitere Antworten.

pid82

Aktives Mitglied
Hi

habe folgende Frage.
Habe im Konstruktor zum schreiben eine Datei geöffnet und will diese geöffnete Datei im
Destruktor schließen.

Nur weiß nicht wie der Destruktor in java aussieht:

Habe es wie in C++ probiert es klappte aber nicht.

~Klassenname() {}

Wie muss ich also den Destruktor aufbauen?
 

Bleiglanz

Gesperrter Benutzer
vergiss den Destruktor, sowas gibts in Java nicht (es gibt zwar finalize(), aber das braucht kein Mensch)

du musst die Datei im Programm an der richtigen Stelle mit close(); explizit schliessen, wenn du mit dem Schreiben fertig bist
 

mic_checker

Top Contributor
Um die Aussage von Bleiglanz noch etwas zu unterstreichen:

Handbuch der Javaprogrammierung Kapitel 7.3 hat gesagt.:
Tatsächlich garantiert die Sprachspezifikation nicht, daß ein Destruktor überhaupt aufgerufen wird. Wenn er aber aufgerufen wird, so erfolgt dies nicht, wenn die Lebensdauer des Objektes endet, sondern dann, wenn der Garbage Collector den für das Objekt reservierten Speicherplatz zurückgibt. Dies kann unter Umständen nicht nur viel später der Fall sein (der Garbage Collector läuft ja als asynchroner Hintergrundprozeß), sondern auch gar nicht. Wird nämlich das Programm beendet, bevor der Garbage Collector das nächste Mal aufgerufen wird, werden auch keine Destruktoren aufgerufen. Selbst wenn Destruktoren aufgerufen werden, ist die Reihenfolge oder der Zeitpunkt ihres Aufrufs undefiniert. Der Einsatz von Destruktoren in Java sollte also mit der nötigen Vorsicht erfolgen.

-> www.javabuch.de
 

pid82

Aktives Mitglied
hmm das ist natürlich nicht gut. schreibe in die Datei in verschiedenen funktionen der Klasse dynamisch rein, also es steht von anfang an nicht fest wann die Datei geschlossen werden soll.

Na ja da muss ich halt überall die datei öffnen und wieder schließen.
 

Bert Brenner

Bekanntes Mitglied
Wo liegt denn nun das Problem? Du wirst doch in deinem Programm wissen ab wann die Datei nicht mehr geöffnet sein muss. Und genau da kann man sie doch schliessen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben