cwiczenie z Thinking in Java(finalize)

0

Czy polecenie zrozumialem i czy jest to dobre rozwiazanie?
Zastanawia mnie jedno, mimo ze zbiornik jest pelny nastapilo odsmiecanie.
Czy mozna zrobic tak aby usuniecie obiektu nie nastapilo jezeli state = false?

Napisz klase zbiornika Tank, ktory moze byc wypelniony i oprozniony oraz posiada warunek zakonczenia(musi byc pusty, kiedy obiekt jest niszczony).Napisz metode finalize, ktora sprawdza warunek smierci.

Czy polecenie zrozumialem i czy jest to dobre rozwiazanie?
Zastanawia mnie jedno, mimo ze zbiornik jest pelny nastapilo odsmiecanie.
Czy mozna zrobic tak aby usuniecie obiektu nie nastapilo jezeli state = false?

class Tank{
boolean state = false;

public Tank(boolean state){
	this.state = state;
}

public void setTank(boolean state){
	this.state = state; 
}
public void finalize(){
	if (state)
		System.out.println("pelny");
}

}

class Cwicz1{
public static void main(String[] args){
Tank t = new Tank(true);
t.setTank(false); //oproznianie zbiornika

	new Tank(true); // zbiornik pelny

	System.gc();
}

}

0

ps. moge sprawic aby "zbiornik" przed zniszczeniem byl pusty:
public void finalize(){
set state = false;
}

ale czy moge zapobiec usunieciu?

0

stanowisko SUNa jest takie, ze na metodzie finalize nie powinno sie opierac logiki aplikacji. Zmien ksiazke na Core Java :P

pozdrawiam

0

nie zakladaj kilku watkow z tym samym pytaniem..
http://4programmers.net/Forum/401920