请说明 Java 语言中 final、finally 和 finalize 三者的不同用途和适用场景。
考察说明
考查对 Java 基础语法中易混淆关键字的掌握程度。
回答思路
- 【回答框架 1】final 是一个修饰关键字,可用于修饰类、方法和变量。修饰类时表示该类不可被继承;修饰方法时表示该方法不能被子类重写;修饰变量时表示该变量只能赋值一次。
- 【回答框架 2】finally 是异常处理机制的一部分,用于定义 try-catch 块中的释放资源代码块,无论是否发生异常都会执行,常用于关闭流或数据库连接。
- 【回答框架 3】finalize 是 Object 类的方法,在对象被垃圾回收前调用,允许对象进行清理操作,但其执行时机不确定且已不推荐使用,Java 9 起已被标记为 deprecated。
- 【关键点 1】final 侧重不可变性约束。
- 【关键点 2】finally 保证异常处理中的清理逻辑一定执行。
- 【关键点 3】finalize 依赖于垃圾回收,不保证及时执行。
- 【易错点 1】不要把 finalize 作为资源释放的主要手段。
- 【易错点 2】finally 中若抛出异常会覆盖原异常。
- 【易错点 3】final 修饰的引用类型变量并不代表对象内容不可变。