Почему константы перечисления не имеют метода 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, поэтому конечный пользователь не может изменять ни одну из констант.