Java 杂谈

java小心机(3)| 浅析finalize()

2018-07-21  本文已影响1人  KenDoEverything

每天进步一丢丢,连接梦与想
如果你停止就是谷底,如果你还在努力就是上坡

系列文章
java"小心机"(1)【资源彩蛋!】
java小心机(2)| 重载和构造器的小细节

public class Book {
    public boolean checkedOut = false;

    public Book(boolean checkedOut) {
        this.checkedOut = checkedOut;
    }

    public void checkIn() {
        checkedOut = false;
    }

    //重写finalize方法 \
    @Override
    protected void finalize() throws Throwable {
        //校验checkedOut
        if (checkedOut) {
            System.out.println("校验出现了一次错误: Checked out ");
        }
       super.finalize();
    }
}
public class TerminationCondition {
    public static void main(String[] args) {

        Book novel = new Book(true);
        novel.checkIn();

        //对checked进行了一次误操作,未进行签入
        new Book(true);

        //调用Gc 强制执行终结操作(finalize)
        System.gc();
    }
}

本例的终结条件是:所有的Book对象在被当作垃圾回收前都应该被签入(check in)。
在main()方法中可看到,一次误操作未对Book对象进行签入,导致有一本书没有被签入。此时我们可以使用finalize()验证终结条件。

热门阅读:

**【推荐两款神器】不限速下载、追剧神器
**实用代码|javaMail发送邮件(文末重磅资源!)
限时领取| 热门编程语言学习资源,不收藏吗?
java面试系列文章:
java面试| 精选基础题(1)
java面试| 精选基础题(2)
java面试| 精选基础题(3)
阅读原文可查看更多精彩内容...****

end~thanks!

image

一个立志成大腿而每天努力奋斗的年轻人

伴学习伴成长,成长之路你并不孤单!

扫描二维码,关注公众号
                                             如果觉得文章不错,请点个赞、分享给你的朋友呗!
上一篇 下一篇

猜你喜欢

热点阅读