java编程思想练习题-第5章练习12-finalize方法3

题目:编写名为Tank的类,此类的状态可以是“满的”或“空的”。其终结条件是:对象被清理时必须处于空状态。  请编写finalize()以检验终结条件是否成立,在main()中测试Tank可能发生的几种使用方式。

public class Tank{	
	
	public boolean state=false;
	
	public void changeState(boolean state){
		this.state=state;
	}
	
	protected void finalize() throws Throwable{
if(state){
System.out.println("----满的,有问题---------");
throw new Throwable ("状态不为空!");
}else{
System.out.println("----空的,没问题---------");
super.finalize();
}
}
	
	public static void main(String[] args) {
		new Tank();
		System.gc();
		System.runFinalization();
		
		new Tank().changeState(true);
		System.gc();
		System.runFinalization();
	}
	
}

 再次声明finalize方法调用具有不可确定性,最好不要使用。

猜你喜欢

转载自buptchj.iteye.com/blog/2247592