finalize()方法
有时候撤销一个对象,需要完成一些操作。例如,如果一个对象正在处理非Java资源,如文件句柄或窗口字体,您应该确保在撤销对象之前释放这些资源。为了处理这种情况,Java提供了一种称为终结的机制。使用这种机制,您可以定义一些特殊的操作,这些操作将在对象即将被垃圾收集器释放时执行。
要向类中添加终结器,只需定义finalize()方法。当Java回收这个类的对象时,调用这个方法。在finalize()方法中,指定在撤消对象之前必须执行的操作。垃圾收集定期运行,check对象不再被运行状态引用,也不再被其他对象间接引用。就在对象被释放之前,Java运行时系统调用对象的finalize()方法。
finalize()方法的一般格式如下:
受保护的void finalize( )
{
//此处为最终代码
}
其中,关键字protected是为了防止在该类之外定义的代码访问finalize()标识符。该标识符和其他标识符将在第7章中解释。
了解finalize()在垃圾收集之前被调用是很重要的。例如,当对象超出其范围时,不会调用finalize()。这意味着您无法知道何时或者是否调用了finalize()。因此,你的程序应该提供其他方法来释放对象所使用的系统资源,而不是依靠finalize()来完成程序的正常运行。
注意:如果你熟悉C++,你会知道C++允许你为一个类定义一个析构函数,这个析构函数在对象超出作用域之前被调用。Java不支持这种想法,也不提供撤销功能。finalize()方法只是接近undo函数的功能。当你有了丰富的Java经验,你会看到,因为Java使用了垃圾回收子系统,所以几乎不需要使用撤销功能。
0条评论