/** * 书本:《Thinking In Java》 * 功能:关于finalize()的调用 * 文件:TerminationCondition.java * 时间:2014年10月6日17:49:09 * 作者:cutter_point */ package Lesson5InitializationAndCleanUp; class Book { boolean checkedOut=false; //检验是否已经是知道的 Book(boolean checkOut) //构造函数 { checkedOut=checkOut; //初始化 } //这里定义一个方法 void checkIn() { checkedOut=false; //查找出来定义为假 } //当程序结束被垃圾回收的时候,调用默认调用这个 protected void finalize() //继承自Object { if(checkedOut) //如果被检测出来了 { System.out.println("错误:检测出来!"); } else //没有检测出来 { System.out.println("这个已经被签入"); } } } //主函数 public class TerminationCondition { public static void main(String [] args) { Book novel=new Book(true); //这是还没有被回收的 novel.checkIn(); //改为false new Book(true); //匿名构造一个对象 new Book(false); System.gc(); //回收垃圾 } } //从结果上看,只出来了 这个被回收了! 和 错误:检测出来! //说明这个只有匿名对象创建的时候才会调用finalize
输出结果:
这个已经被签入
错误:检测出来!
时间: 2024-11-12 17:33:42