撤销对象的方法:finalize( )

有时当撤消一个对象时,需要完成一些操作。例如,如果一个对象正在处理的是非Java 资源,如文件句柄或window字符字体,这时你要确认在一个对象被撤消以前要保证这些资源被释放。

为处理这样的状况,Java提供了被称为收尾(finalization)的机制。使用该机制你可以定义一些特殊的操作,这些操作在一个对象将要被垃圾回收程序释放时执行。要给一个类增加收尾(finalizer)

,你只要定义finalize ( )方法即可。Java回收该类的一个对象时,就会调用这个方法。在finalize ( )方法中,你要指定在一个对象被撤消前必须执行的操作。垃圾回收周期性地运行,检查对象不再被

运行状态引用或间接地通过其他对象引用。就在对象被释放之前,Java运行系统调用该对象的finalize( )方法。 finalize()方法的通用格式如下:

protected void finalize( )

{

// finalization code here

}

其中,关键字protected是防止在该类之外定义的代码访问finalize()标识符。该标识符和其他标识符将在第7章中解释。

理解finalize( )正好在垃圾回收以前被调用非常重要。例如当一个对象超出了它的作用域时,finalize( )并不被调用。

这意味着你不可能知道何时甚至是否finalize( )被调用。

因此,你的程序应该提供其他的方法来释放由对象使用的系统资源,而不能依靠finalize( ) 来完成程序的正常操作

posted @ 2021-08-09 21:45  lbeaner  阅读(74)  评论(0)    收藏  举报