美文网首页
2021-05-16 《Java 核心技术36讲》学习记录三

2021-05-16 《Java 核心技术36讲》学习记录三

作者: _笑口常开 | 来源:发表于2021-05-18 07:16 被阅读0次

    简述

    此文是对 第3讲 | 谈谈final、finally、 finalize有什么不同? 的学习

    一些知识点/笔记点:

    • final 用来修饰类、方法、变量
    • final 修饰的 class 代表不可以继承扩展
    • final 的变量是不可以修改的
    • final 的方法也是不可以重写的(override)
    • finally 用于 try-finally 或者 try-catch-finally
    • finalize 是基础类 java.lang.Object 的一个方法,目的是保证对象在被垃圾收集前完成特定资源的回收。JDK 9 已经不用了。
    try {
      // do something
      System.exit(1);
    } finally{
      System.out.println(“Print from finally”);
    }
    
    • 这里的 finally 不会被执行到
    • 实现 immutable 类的方法:

    将 class 自身声明为 final,这样别人就不能扩展来绕过限制了。
    将所有成员变量定义为 private 和 final,并且不要实现 setter 方法。
    通常构造对象时,成员变量使用深度拷贝来初始化,而不是直接赋值,这是一种防御措施,因为你无法确定输入对象不被其他人修改。
    如果确实需要实现 getter 方法,或者其他可能会返回内部状态的方法,使用 copy-on-write 原则,创建私有的 copy。
    关于 setter/getter 方法,很多人喜欢直接用 IDE 一次全部生成,建议最好是你确定有需要时再实现。

    联想

    • OC 里面关于垃圾回收
    • OC 里面关于 immutable

    相关文章

      网友评论

          本文标题:2021-05-16 《Java 核心技术36讲》学习记录三

          本文链接:https://www.haomeiwen.com/subject/qycejltx.html