Sobes.tech
Middle

Mis on Java keeles final ja finalize ning milles nende erinevus seisneb?

sobes.tech AI

Vastus AI-lt

final - võtmesõna, mis tähistab muutumatust:

  • Muutuja: viide või väärtus ei saa pärast initsialiseerimist muutuda.
  • Meetod: meetodit ei saa alampõhklassis üle kirjutada.
  • Klass: klassi ei saa pärida.

finalize() - meetod, mida kutsutakse prügikoristaja (Garbage Collector) enne objekti mälust kustutamist. See asub Object klassis ja on mõeldud väliste ressursside vabastamiseks.

Võrdlus:

final finalize()
Võtmesõna Meetod
Näitab muutumatust Kutsutakse enne objekti kustutamist
Seotud deklaratsiooniga Seotud objekti elutsükliga
Rakendub muutujatele, meetoditele, klassidele Rakendub ainult objektidele

final näide:

public class FinalExample {
    final int finalVariable = 10;

    final void finalMethod() {
        // muutumatu meetodi loogika
    }
}

final class FinalClass {
    // sisu
}

finalize() näide:

public class FinalizeExample {
    @Override
    protected void finalize() throws Throwable {
        try {
            // väliste ressursside puhastamine, näiteks ühenduse sulgemine
            System.out.println("Finalizing FinalizeExample object...");
        } finally {
            super.finalize(); // alati kutsuge super.finalize()
        }
    }
}

Oluline: finalize() kasutamine ei ole kaasaegses Java-s soovitatav, kuna selle täitmise aeg on ettearvamatu ning see võib põhjustada jõudluse probleeme. Ressursside haldamiseks on parem kasutada try-with-resources plokke.