Sobes.tech
Junior

Mi a különbség a final és a finalize kulcsszavak között Java-ban?

sobes.tech MI

Válasz az MI-től

Java-ban a final és a finalize külön fogalmak, különböző célokra:

  • A final egy kulcsszó, amit a következők deklarálására használnak:
    • Állandók (változók, amiket nem lehet módosítani a inicializálás után).
    • Olyan metódusok, amiket nem lehet felülírni az alosztályokban.
    • Olyan osztályok, amiket nem lehet örökölni.

Példa:

final int x = 10; // x nem módosítható
final class MyClass {} // osztály nem örökölhető
final void myMethod() {} // metódus nem írható felül
  • A finalize() a Object osztály egyik metódusa, amit a szemétgyűjtő hív meg, mielőtt az objektumot eltávolítja a memóriából. Célja az erőforrások felszabadítása, de használata nem ajánlott, mivel a hívás nem garantált, és kiszámíthatatlan viselkedést eredményezhet.

Példa:

@Override
protected void finalize() throws Throwable {
    // erőforrások felszabadítása
    super.finalize();
}

Különbségek:

  • A final egy kulcsszó a kód módosításának ellenőrzésére.
  • A finalize egy módszer a szemétgyűjtés előtti tisztításra, elavult és nem ajánlott használni.