题目:编写名为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方法调用具有不可确定性,最好不要使用。