<分区>
我正在阅读Thinking in Java,第 4 版。我发现一个问题:当我在Eclipse IDE中测试源代码时,发现结果不一样。我希望有人能帮助我!
这里是源码
class Book {
boolean checkedOut = false;
Book(boolean checkOut) {
checkedOut = checkOut;
}
void checkIn() {
checkedOut = false;
}
protected void finalize() {
if(checkedOut)
System.out.println("Error:checked out");
//Normally,you'll also do this:
//super.finalize();//Call the base-class version
}
}
public class TerminationCondition {
public static void main(String[]args) {
Book novel=new Book(true);
//Proper cleanup:
novel.checkIn();
//Drop the reference,forget to clean up:
new Book(true);
new Book(true);
new Book(true);
//Force garbage collection & finalization:
System.gc();
}
}
本书的结果:
Error: Checked out
IDE的结果
(nothing)
我使用的 Java 版本:
Java 版本“1.7.0_51”
Java(TM) SE 运行时环境 (build 1.7.0_51-b13)
Java HotSpot(TM) 64 位服务器 VM(构建 24.51-b03,混合模式)
本书中的 Java 版本是 Java 5。finalize 方法有什么变化吗?