Sobes.tech
Junior — Middle
103

Da li je moguće objasniti razliku između ključne reči final i metode finalize u Javi?

Одговор од АИ

sobes.tech АИ

В Java ключевое слово final и метод finalize() имеют совершенно разные назначения:

  • final — это модификатор, который можно применять к классам, методам и переменным.

    • Для класса: класс нельзя наследовать.
    • Для метода: метод нельзя переопределять в подклассах.
    • Для переменной: значение переменной нельзя изменить после инициализации.
  • finalize() — это метод, который определён в классе Object и может быть переопределён для освобождения ресурсов перед тем, как объект будет удалён сборщиком мусора. Однако его использование не рекомендуется, так как вызов finalize() не гарантируется и может привести к непредсказуемому поведению.

Пример использования final:

final class Constants {
    public static final double PI = 3.14159;
}

class MyClass {
    public final void doSomething() {
        // этот метод нельзя переопределить
    }
}

Метод finalize() выглядит так:

@Override
protected void finalize() throws Throwable {
    try {
        // очистка ресурсов
    } finally {
        super.finalize();
    }
}

Но лучше использовать другие механизмы управления ресурсами, например, try-with-resources.