美文网首页
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