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

简述

此文是对 第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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容