以下是我的执行结果,是从command 窗口直接拷下来的。 我比较同意 alienbat(死灵巫师) 的解释。Microsoft Windows [版本 5.2.3790] (C) 版权所有 1985-2003 Microsoft Corp.D:\Documents and Settings\Administrator>g:G:\>cd jtraningG:\jtraning>javac Frog.javaG:\jtraning>java Frog Not finalize base Creating Characteristicis alive LivingCreature() Creating Characteristichas heart Animal() Creating Characteristiccan live in water Amphibian() Frog() Bye Frog finalize finalizing Characteristic is alive finalizing Characteristic has heart finalizing Characteristic can live in waterG:\jtraning>
而且,这个程序中的finalize参数只是用来控制是否执行其所继承的父类的finalize方法的,成员对象Characteristic的清理和加不加finalize没关系啊。?
这个程序和书上给出的是一样的,已经核对过多次了。先看过这本书的先驱们,不知你们有没有把这个程序敲出来执行过。如果执行了,结果和书上给出的结果一致吗?
我比较同意 alienbat(死灵巫师) 的解释。Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.D:\Documents and Settings\Administrator>g:G:\>cd jtraningG:\jtraning>javac Frog.javaG:\jtraning>java Frog
Not finalize base
Creating Characteristicis alive
LivingCreature()
Creating Characteristichas heart
Animal()
Creating Characteristiccan live in water
Amphibian()
Frog()
Bye
Frog finalize
finalizing Characteristic is alive
finalizing Characteristic has heart
finalizing Characteristic can live in waterG:\jtraning>
干嘛还比较同意啊。
楼主的意思是强制System.gc(),让系统作GC。但是问题在于,那点保证了强制GC一定就会导致你finalize被执行?