Почему константы перечисления не имеют метода finalize?

Я искал в Интернете, чтобы найти ответы на некоторые из вопросов, связанных с перечислением класса в Java.

Мне было любопытно узнать о внутренностях класса enum, поэтому я открыл исходный код и нашел там несколько методов, как показано ниже:

protected final void finalize() { }

Я нашел метод finalize, который является пустой реализацией и не имеет должных комментариев. Поэтому мой вопрос заключается в том, почему в классе enum не может быть метода finalize, значит, есть ли вред, если метод finalize есть в классе enum, или есть какая-то другая причина этого.

Я больше запутался, увидев этот класс. Любая помощь будет оценена. Заранее спасибо.

2 ответа

Enum В классе есть только 1 экземпляр для каждого перечисляемого значения, объявленного в одной установке JVM. Они по сути синглтоны в JVM.

Это легко доказать в Oracle JVM, поскольку хэш-кодом объекта по умолчанию является адрес памяти. Затем вы можете увидеть в любом месте вашей программы, когда вы устанавливаете Enum Например, это на самом деле тот же объект.

1)- enum используется для объявления констант, enum constatnts static, то есть уровня класса... следовательно, не может быть отсортирован.

2) -все методы класса объекта, кроме toString(), переопределяются и объявляются как окончательные в классе Enum, поэтому конечный пользователь не может изменять ни одну из констант.

Другие вопросы по тегам