Что такое метод finalize() в Java и как его переопределить

Cto Takoe Metod Finalize V Java I Kak Ego Pereopredelit



Java предоставляет разработчику широкие возможности для эффективного управления системными ресурсами. В таком сценарии « завершить() », который освобождает системные ресурсы перед выполнением сборщика мусора для определенного объекта. Однако «Виртуальная машина Java (JVM)» позволяет вызывать метод «finalize()» один раз для каждого объекта.

В этом блоге мы обсудим использование и переопределение метода finalize().







Что такое метод «finalize()» в Java и как его переопределить?

завершить() метод « Объект » вызывается «сборщиком мусора» непосредственно перед удалением объекта, который подходит для сборки мусора, чтобы применить задачу очистки.



Синтаксис



защищенная пустота финализировать ( ) бросает





В этом синтаксисе « защищенный ” — это спецификатор доступа, который подразумевает, что к этому методу можно получить доступ только внутри класса и производных классов этого класса.

Пример 1: Применение метода «finalize()» в Java



Этот пример иллюстрирует использование метода finalize():

открытый класс Finalize2 {
защищенная пустота финализировать ( ) {
System.out.println ( 'Это метод Finalize!' ) ;
}
публичная статическая пустота главная ( Нить [ ] аргументы ) {
Объект Finalize2 = новый Finalize2 ( ) ;
объект = ноль;
System.gc ( ) ;
System.out.println ( 'Вызван сборщик мусора!' ) ;
} }

В приведенных выше строках кода:

  • Примените « завершить() ” в классе Finalize2, содержащем указанный оператор.
  • В ' основной », создайте объект класса с помощью конструктора «Finalize2()».
  • Теперь выделите объект « нулевой ' ценить. Это так, что когда он имеет «нулевое» значение, ссылки нет, и поэтому он подходит для сборки мусора.
  • После этого примените « System.gc () ” для запуска сборщика мусора, тем самым вызывая метод “finalize()”.

Выход

Здесь можно проверить, правильно ли вызывается метод finalize().

Пример 2. Переопределение метода «finalize()» в Java

Объект ” соответствует родительскому классу всех классов Java. Метод finalize(), присутствующий в этом классе, не имеет никакой реализации. Однако в определении класса есть действия по очистке. Следовательно, переопределение этого метода приводит к выполнению определенных действий по очистке:

открытый класс Finalize {
защищенная пустота финализировать ( ) бросает {
пытаться {
System.out.println ( 'Метод finalize() класса' ) ;
}
ловить ( Метательный кроме ) {
бросить кроме;
}
окончательно {
System.out.println ( 'Вызов метода finalize() класса Object' ) ;
super.finalize ( ) ;
} }
публичная статическая пустота главная ( Нить [ ] аргументы ) бросает {
Завершить объект = новый Завершить ( ) ;
obj.finalize ( ) ;
} }

Согласно приведенному выше блоку кода:

  • Укажите « завершить() » и объявить « Метательный исключение соответственно.
  • В ' пытаться », указать указанный оператор и справиться с исключением в блоке « ловить ' блокировать.
  • В ' окончательно блок, « супер ключевое слово указывает на метод finalize () класса объекта. Он применяется в этом конкретном блоке, чтобы обеспечить выполнение метода «finalize()», даже если возникнет исключение.
  • В ' основной », создайте объект класса и переопределите метод «finalize()» класса объекта с помощью метода, указанного/определенного в классе «Finalize».

Выход

В этом результате можно заметить, что метод «finalize ()» успешно переопределен.

Заключение

завершить() » вызывается «Сборщиком мусора» перед удалением объекта и может быть переопределен с помощью « супер ключевое слово. В этом блоге обсуждалось использование и переопределение метода finalize() в Java.