java - 为什么枚举常量没有 finalize 方法?

标签 java enums finalizer

我一直在网上搜索与 java 中的枚举类相关的一些查询的答案。

我很想知道枚举类的内部结构,因此我打开了源代码并发现了一些方法,如下所示 --

protected final void finalize() { }

我在那里找到了 finalize 方法,它是一个空白的实现,并且没有正确注释。所以我的问题是为什么枚举类不能有 finalize 方法意味着在枚举类中有 finalize 方法是否有任何危害,或者这背后是否有任何其他原因。

看到这个类,我更加困惑了。任何帮助将不胜感激。提前致谢。

最佳答案

Enum 类在 JVM 的单个安装中每个枚举值只有 1 个实例。它们本质上是 JVM 上的单例。

在 Oracle JVM 上很容易证明这一点,因为对象的默认标识哈希码是内存地址。然后当你设置一个Enum实例时,你可以在你的程序的任何地方看到,它实际上是同一个对象。

关于java - 为什么枚举常量没有 finalize 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34587016/

相关文章:

java - JPA 映射错误

java - 类构造函数中的 ArrayIndexOutOfBounds

c# - 如何处理 C# 类中的所有异常,其中 ctor 和终结器都抛出异常?

c# - 使用Object Initializer的复活区别

windows - 终结器中的 WCF NullReferenceException

java - 避免在泛型层次结构中进行强制转换

java - EJB 3.x onMessage() 与@Timeout 事务上下文

java - 将枚举值与类字段匹配

c# - 如何在 C# 中获取枚举的小写表示形式?

dictionary - 我在 Xcode 6 beta5 中使用枚举键在我的字典上出现 EXC_BAD_INSTRUCTION 错误