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

时间:2016-01-04 08:15:12

标签: java enums finalizer

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

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

protected final void finalize() { }

我发现那里的finalize方法是一个空白的实现,并没有正确评论。所以我的查询是为什么枚举类不能有finalize方法意味着在枚举类中使用finalize方法是否有任何损害,或者是否有任何其他原因。

看到这堂课后,我更加困惑。任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-2)

1) - 枚举用于声明常量,枚举常量静态,即类级别...因此不能被删除。

2) - 除了toString()之外的所有对象类方法都被覆盖并在Enum类中声明为final,因此最终用户不能修改任何常量。