java - 在 Java 中,关键字 `final` 、 `finally` 和 `finalize` 实现什么目的?

标签 java final finally finalize

在 Java 中,关键字 finalfinallyfinalize 的用途是什么?

最佳答案

最终

final 可用于将变量标记为“不可更改”

private final String name = "foo";  //the reference name can never change

final 也可以使方法不可“覆盖”

public final String toString() {  return "NULL"; }

final 也可以使类不是“可继承的”。即该类不能被子类化。

public final class finalClass {...}
public class classNotAllowed extends finalClass {...} // Not allowed

终于

finally 用于 execute code "always" 的 try/catch 语句

lock.lock();
try {
  //do stuff
} catch (SomeException se) {
  //handle se
} finally {
  lock.unlock(); //always executed, even if Exception or Error or se
}

Java 7 有一个 new try with resources statement可用于自动关闭显式或隐式实现的资源 java.io.Closeablejava.lang.AutoCloseable

敲定

finalize 在对象被垃圾回收时调用。您很少需要覆盖它。一个例子:

protected void finalize() {
  //free resources (e.g. unallocate memory)
  super.finalize();
}

关于java - 在 Java 中,关键字 `final` 、 `finally` 和 `finalize` 实现什么目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814688/

相关文章:

java - Java 类中方法的静态最终常量的位置

java - "static final int"是什么意思?

loops - Powershell try catch 并重试?

java - Android 音频卡在底部扬声器上,无法在我的应用程序中使用耳机。应用程序也卡住

java线程挂起导致其他线程挂起(续)

java - 如何在不知道实际模式的情况下检查字符串中的重复模式?

angular - 使用 RxJS 可观察对象在可观察对象返回后采取行动时, 'do' 和 'finally' 之间有什么区别?

java - Spring MVC @Valid 注解适用于所有 Controller ?

java - final 在 Java 中做什么? - 困难版

c++ - 使用 C++ lambda 正确实现 finally block